「Ctrl + Alt + Del」をエミュレートできないかと考えています。
要は「Ctrl + Alt + Del」を押さず、何かボタンでも押したら
「Windows のセキュリティ」ダイアログを表示させたいという
ことです。
keybd_event(VK_CONTROL, 0, 0, 0); // Ctrl
keybd_event(VK_MENU, 0, 0, 0); // Alt
keybd_event(VK_DELETE, 0, 0, 0); // Del
keybd_event(VK_DELETE, 0, KEYEVENTF_KEYUP, 0);
keybd_event(VK_MENU, 0, KEYEVENTF_KEYUP, 0);
keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);
のようにキーイベントを発行したのですができません。
どなたかご存知の方、ご教授願います。
環境はWin2000、VC++6.0です。
LockWorkStation();
というAPIでできましたが、WIN2000以降?のようです。
winuser.hには
#if(_WIN32_WINNT >= 0x0500)
って定義されていました。
また、他の方法では
PostMessage(HWND_BROADCAST, WM_HOTKEY, 0, MAKELONG(MOD_ALT | MOD_CONTROL,
VK_DELETE));
のように書くと良いらしいのですが、こちらは権限の設定がうまくできなくて
試せませんでした。「ファイル名を指定して実行」が出てきてしまいました。
あ、すいません。
LockWorkStation();
はちょっと画面が違いますね。コンピュータのロック画面です。
ホットキーを使えばよいような気がします
キーワード「WM_HOTKEY」辺りで検索してみてください
確かに「ファイル名を指定して実行」がでますね...。
権限を変えるのって難しいんですよね...?
WinXP のリモート アシスタンスのような機能を持っている
VNCというツールがあってクライアント側からサーバー側に
CTRL+ALTL+DELを送信するという機能があります。
http://www.uk.research.att.com/vnc/
http://www.sra.co.jp/people/akira/vnc/ (VNCのページ(紹介・日本語))
ソースも公開されているので、それを参照してみたんですが
これのサーバー側の処理でPostMessage~、の前に何かやっています。
また、
http://www1.linkclub.or.jp/~y-yazaki/Know_How/Programer/N0000001.html
このページではプログラムをサービスにしデスクトップとの対話を
可能にしてデスクトップを”Winlogon”にスレッドを切りかえてから
メッセージを送信すると書いてありました。
???
私は挫折してしまいました。すいません。
いろいろとありがとうございます
解決とはいきませんでしたが、とりあえず解決済みにしたいと思います
何か分かりましたら、ご報告します