フォーラム


ゲスト  

ようこそ ゲスト さん。このフォーラムに投稿するには 登録が必要です。

ページ: [1]
トピック: 〔Windows〕キーを押した事にする
DEKO
管理者
投稿数: 2691
〔Windows〕キーを押した事にする
on: 2014/06/19 06:00 Thu

デスクトップアプリケーションを Windows 8.x のスタート画面にピン留めし、そこから起動した場合、アプリケーションを終了してもスタート画面には自動で戻る事ができません。また、デスクトップアプリケーションからスタート画面へ戻るための API も存在しないようです。

  • 左〔Windows〕キーを押す
  • 〔Ctrl〕+〔Esc〕キーを押す

このいずれかで〔Windows〕キーを押した事になり、Windows 8.x ではスタート画面に戻る事ができます。

procedure SendWindowsKey;
var
KeyInputs: array of TInput;
KeyInputCount: Integer;

procedure KeybdInput(VKey: Byte; Flags: DWord);
begin
Inc(KeyInputCount);
SetLength(KeyInputs, KeyInputCount); // 仮想Key用の配列を確保
KeyInputs[KeyInputCount - 1].Itype := INPUT_KEYBOARD;
with KeyInputs[KeyInputCount - 1].ki do
begin
wVk := VKey;
// 仮想キーコードをスキャンコードに変換してセット
wScan := MapVirtualKey(wVk, 0);
dwFlags := Flags or KEYEVENTF_EXTENDEDKEY;
time := 0;
dwExtraInfo := 0;
end;
end;

begin
KeyInputCount := 0;
KeybdInput(VK_LWIN, 0);
KeybdInput(VK_LWIN, KEYEVENTF_KEYUP);
SendInput(KeyInputCount, KeyInputs[0], SizeOf(KeyInputs[0]));
end;

 
将来、従来のスタートメニューが復活した場合にはこの手法は使えなくなると思います。また、Start Menu 8 等のスタートメニューソフトをインストールしているとこの手法は使えません。

ページ: [1]
WP Forum Server by ForumPress | LucidCrew
バージョン: 1.7.5 ; ページロード: 0.02 sec.