3

ウィンドウがタスク バーに表示されず、システム トレイにのみ表示されます。タスクバーにも表示させるにはどうすればよいですか?

次のコードを試しましたが、効果がありませんでした。

int windowStyle = GetWindowLong(pMainWindow, GWL_EXSTYLE);
SetWindowLong(pMainWindow, GWL_EXSTYLE, windowStyle & WS_EX_TOOLWINDOW);

そして、これは私のフォームではありません!Process.GetProcessesByName からハンドルを取得していますが、Form クラスのプロパティにアクセスする方法がわかりません。

Process[] processes = Process.GetProcessesByName("somename");
someProcess = processes[0];

pMainWindow = someProcess.MainWindowHandle;
4

4 に答える 4

2

以下はトリックを行うようです。SetWindowLong を呼び出した後にウィンドウを非表示にして再表示すると、タスクバーに表示されます。

ウィンドウが最小化されたら、タスクバーから削除する方法を見つけるのに苦労しています...

[DllImport("User32.Dll")]                
public static extern int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong);

[DllImport("user32.dll")]
static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);

private const int SW_HIDE = 0x00;
private const int SW_SHOW = 0x05;

private const int WS_EX_APPWINDOW = 0x40000;
private const int GWL_EXSTYLE = -0x14;

private void ShowWindowInTaskbar(IntPtr pMainWindow)
{                       
    SetWindowLong(pMainWindow, GWL_EXSTYLE, WS_EX_APPWINDOW);

    ShowWindow(pMainWindow, SW_HIDE);
    ShowWindow(pMainWindow, SW_SHOW);      
}
于 2009-09-22T21:44:32.020 に答える
2

WS_EX_APPWINDOWの代わりに渡しますWS_EX_TOOLWINDOWドキュメントから:

WS_EX_APPWINDOW: ウィンドウが表示されているときに、最上位ウィンドウを強制的にタスク バーに表示します。

WS_EX_TOOLWINDOW: ...ツール ウィンドウは、ユーザーが ALT + TAB を押したときに表示されるタスクバーまたはダイアログに表示されません...

于 2009-09-22T21:28:04.493 に答える
0

フォームの.ShowInTaskbarプロパティをtrueに設定します。

于 2009-09-22T20:53:01.407 に答える
-1

Process.GetProcessesByName() で返されたオブジェクトをフォームとしてキャストし、その .ShowInTaskbar プロパティを設定できますか?

于 2009-09-22T20:55:36.853 に答える