No.6ベストアンサー
- 回答日時:
★アドバイス
>の部分までで、キー入力されたことになっているのでしょうか?
↑
いいえキー入力されたことにはなりません。
単にINPUT構造体にデータをセットしただけです。
SendInput()関数を実行して初めて『S』キーが押されたのと同じになります。
・SendInput()関数の戻り値を調べてみましたか?
ifで分岐して正常、エラーのどちらが表示されますか?
MessageBox()などで確認して下さい。
エラーならINPUT構造体のセット内容の不正かも知れません。
私の載せたサンプルは『マルチバイト文字』を想定した書き方です。
オプション設定で『Unicode文字』を使う設定ですか?
No.5
- 回答日時:
★アドバイス
回答者No.4さんのアドバイス通りでしょう。
前回の質問でサンプルを載せましたがインデントを全角空白で書いています。
タブ文字だとインデントがなくなるためです。
よってサンプル・ソースでインデントされていれば全角空白だと考え
今後コピー&ペーストするときにタブ文字に修正して下さい。
※少なくとも私が貼り付けるサンプルは全角空白でインデントしてます。
この回答への補足
ありがとうございます。まだ自動入力動作自体は
できておりませんが、
お陰様でとりあえずエラーは出なくなりました。
度々すみません。もう一点お伺いしたいのですが、
頂いたサンプルプログラムの
if ( SendInput((UINT)(lpKey - Key),Key,sizeof(INPUT)) == (UINT)(lpKey - Key) ){
正常
}
else{
エラー
}
の部分をなくしても
setKeybrd( lpKey++, 'S', TRUE );
setKeybrd( lpKey++, 'S', FALSE );
の部分までで、キー入力されたことになっているのでしょうか?
おそらく私の使用しているプログラム自体に
問題があるのですが、上記のやり方で
実行しても「S」の自動入力がされていないみたいでして。
No.3
- 回答日時:
★補足要求です。
>変数の宣言・ヘッダのインクルードなどはまったくしていないのですがこれが原因なのでしょうか?
↑
『windows.h』はインクルードしていますか?
これがないとINPUTやLPINPUT型でエラーになります。
インクルードしていないのならば
#include<windows.h>
を1行追加して下さい。
・これ以外が原因ならば全ソースを貼り付けるか、エラー内容を貼り付けて下さい。
この回答への補足
すみません。#include<windows.h>をつけても下記のエラーです。error C3872: '0x3000': この文字を識別子で使用することはできません
error C2065: ' lpKey' : 定義されていない識別子です。
error C2227: '->type' : 左側がクラス、構造体、共用体、ジェネリック型へのポインタではありません。
型は ''unknown-type'' です。
error C3872: '0x3000': この文字を識別子で使用することはできません
error C2227: '->ki' : 左側がクラス、構造体、共用体、ジェネリック型へのポインタではありません。
型は ''unknown-type'' です。
error C2228: '.wVk' の左側はクラス、構造体、共用体でなければなりません
error C3872: '0x3000': この文字を識別子で使用することはできません
error C2227: '->ki' : 左側がクラス、構造体、共用体、ジェネリック型へのポインタではありません。
型は ''unknown-type'' です。
error C2228: '.wScan' の左側はクラス、構造体、共用体でなければなりません
error C3872: '0x3000': この文字を識別子で使用することはできません
error C2227: '->ki' : 左側がクラス、構造体、共用体、ジェネリック型へのポインタではありません。
型は ''unknown-type'' です。
error C2228: '.dwFlags' の左側はクラス、構造体、共用体でなければなりません
error C3872: '0x3000': この文字を識別子で使用することはできません
error C2227: '->ki' : 左側がクラス、構造体、共用体、ジェネリック型へのポインタではありません。
型は ''unknown-type'' です。
error C2228: '.dwExtraInfo' の左側はクラス、構造体、共用体でなければなりません
error C3872: '0x3000': この文字を識別子で使用することはできません
error C2227: '->ki' : 左側がクラス、構造体、共用体、ジェネリック型へのポインタではありません。
型は ''unknown-type'' です。
error C2228: '.time' の左側はクラス、構造体、共用体でなければなりません
error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
error C2365: 'setKeybrd' : 再定義; 以前の定義は '関数' でした。
c:\documents and settings\すがp\my documents\visual studio 2005\projects\golfp\tiem.cpp(27) : 'setKeybrd' の宣言を確認してください。
error C2078: 初期化子の数が多すぎます。
error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
error C2365: 'setKeybrd' : 再定義; 以前の定義は '関数' でした。
c:\documents and settings\すがp\my documents\visual studio 2005\projects\golfp\tiem.cpp(27) : 'setKeybrd' の宣言を確認してください。
error C2078: 初期化子の数が多すぎます。
error C2059: 構文エラー : 'if'
error C2143: 構文エラー : ';' が '{' の前にありません。
error C2447: '{' : 対応する関数ヘッダーがありません (旧形式の仮引数リスト?)
No.2
- 回答日時:
★前回回答した者です。
・こちらの環境は Windows XP SP2 です。
ちゃんと動作しています。
よってソースの記述に誤りがありそうな気がします。
補足にソースを貼り付けてみて下さい。
もしかしたら解決するかもしれません。
>(MDSNにはNT SP4以降と書いてありました。)
こう書かれているのならば
Windows NT SP4
Windows 2000
Windows XP
Windows Vista
でも使用可能という意味です。
この回答への補足
お世話なります。
実は知人のプログラムベースでコピペをしたら
動いたのですが、私のプログラムにそれを写したところ
エラーが出てしまいました。
変数の宣言・ヘッダのインクルードなどはまったくしていないのですがこれが原因なのでしょうか?
ちなみにプログラムはほぼそのまま
VOID setKeybrd( LPINPUT lpKey, WORD wVKey, BOOL bKeyDown )
{
lpKey->type = INPUT_KEYBOARD;
lpKey->ki.wVk = wVKey;
lpKey->ki.wScan = (WORD)MapVirtualKey( wVKey, 0 );
lpKey->ki.dwFlags = (bKeyDown ? 0 : KEYEVENTF_KEYUP);
lpKey->ki.dwExtraInfo = 0;
lpKey->ki.time = 0;
}
INPUT Key[ 2 ];
LPINPUT lpKey = Key;
setKeybrd( lpKey++, 'S', TRUE );
setKeybrd( lpKey++, 'S', FALSE );
if ( SendInput((UINT)(lpKey - Key),Key,sizeof(INPUT)) == (UINT)(lpKey - Key) ){
//”S”を押すと実行する既存のプログラム
}
といった感じで使わせてもらっております。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・「I love you」 をかっこよく翻訳してみてください
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・昔のあなたへのアドバイス
- ・かっこよく答えてください!!
- ・あなたが好きな本屋さんを教えてください
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
python エラー
-
エクセルのエラーメッセージ「4...
-
Excelのエラーで困ってます。
-
VB2008で定数に色の設定をした...
-
バッチからsqlplusの接続エラー...
-
適切な変換関数が存在しない???
-
VS2013 C++で、コンパイルした...
-
HEWを使用しているのですが、こ...
-
DLL関数を使ったプログラム
-
ビルドが失敗してしまいます
-
VC2010のビルドエラーを全部出...
-
sys/time.hのインクルードがで...
-
デバッグ中のエラーのことで教...
-
VC構文エラー、”:”
-
Visual Studioのstrcpy_sについて
-
VBScriptによるExecuteExcel4Ma...
-
visualstudioでコンパイルでき...
-
エラー 'iostream.h' : No su...
-
VC++ 2008 Express EditionでWi...
-
右オペランドを扱う演算子は定...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
python エラー
-
エクセルのエラーメッセージ「4...
-
Excelのエラーで困ってます。
-
fortranでプログラムを実行する...
-
バッチからsqlplusの接続エラー...
-
適切な変換関数が存在しない???
-
VB2008で定数に色の設定をした...
-
HEWを使用しているのですが、こ...
-
sys/time.hのインクルードがで...
-
BC30002: 型 'ListItem' が定義...
-
Handlesについて
-
Visual Studioのstrcpy_sについて
-
RightとLeft関数のライブ...
-
error C3867 関数呼び出しには...
-
デバッグ中のエラーのことで教...
-
コンパイルできません。
-
multiple definitionというエラー
-
ビルド失敗 指定されたファイ...
-
レコードセットをcloseする所で...
-
左側がクラス、構造体、共用体...
おすすめ情報