2

コードを介して WindowsKey + M と同じタスクを実行する必要があります。開いているすべてのウィンドウを最小化します。これは、.Net ではなく、Win32 API を介して行う必要があります。

FreeBasic で次のことを試しましたが、何も起こりません。

Dim hWndConsole As HWND
'Shell_TrayWnd = class name of taskbar
Dim WindowName as String = "Shell_TrayWnd"

hWndConsole = FindWindow(0, strptr(WindowName))
ShowWindow(hWndConsole, SW_MINIMIZE) 'outta my sight

誰かがこれを行う方法を知っていますか?

ありがとうございました。


編集:これが実用的なソリューションです:

#include "Windows.bi"

Dim hWndConsole As HWND
'Shell_TrayWnd = class name of taskbar
Dim WindowName as String = "Shell_TrayWnd"
Dim res as LRESULT
CONST minall = 419

hWndConsole = FindWindow( "Shell_TrayWnd",null)

res = postMessage(hWndConsole, WM_COMMAND,  minall, null )
4

3 に答える 3

3

これは私にはちょっとしたハックのように思えますが、以下はあなたが探しているものを達成しているようです(Cで):

HANDLE hwnd = FindWindow( "Shell_TrayWnd", NULL );
LRESULT res = SendMessage( hwnd, WM_COMMAND, (WPARAM)419, 0 );
于 2012-12-18T23:02:37.467 に答える
1

ウィンドウのハンドルを取得すると、メッセージでウィンドウを最小化できWM_SYSCOMMANDます。例えば:

SendMessage(hwnd, WM_SYSCOMMAND, SC_MINIMIZE, 0);

したがって、最上位のウィンドウを (EnumWindowsコマンドを使用して) 列挙し、そのコマンドを最小化するウィンドウに送信するだけです (これはすべての最上位のウィンドウではありません。WS_EX_TOOLWINDOW拡張スタイルはこのように最小化する必要があります)。

于 2012-12-18T23:15:32.623 に答える
0

これを推奨ではなくオプションとして出す - のキーボードイベントをシミュレートするWin-M:

keybd_event(VK_LWIN, 0, 0, 0);
keybd_event('M', 0, 0, 0);
keybd_event(VK_LWIN, 0, KEYEVENTF_KEYUP, 0);
于 2012-12-19T11:00:27.653 に答える