質問
こちらの私の課題が必要でありプロセスが実行されてから、C#プログラム。問題は、その過程を通してアイコンを極小に抑え、タスクバー)のない限り、ユーザが開いに最低一度は開催していないが起きる無人機でん てウィンドウに表示します。
その他の要求事項を遵るいは申請すること 閉鎖 ない 死者.が必要で書きのメモリバッファディスクおよび殺害の原因となるデータが失われます。
こちらはうか
foreach (Process proc in Process.GetProcesses())
{
if (proc.ProcessName.ToLower().StartsWith("myapp"))
{
if (proc.MainWindowHandle.ToInt32() != 0)
{
proc.CloseMainWindow();
proc.Close();
//proc.Kill(); <--- not good!
}
}
}
を加えました の場合 条項、発見る MainWindowHandle==0 時にウィンドウを最小限にする。を取り除く の場合 ません。ものであ CloseMainWindow() もの Close() ます。の Kill() は、上記のとではないか。
うに受け入れる、難解Win32API機能)
解決 3
ここ最近動画投稿が滞っていると説明:
rpetrich:ただ、問題は、非常に良いのではないかと思いウィンドウ名からユーザのユーザーのバージョンをバージョンのエグゼ名は定数です。すべての私の名前です。とで上記のコードのMainWindowHandleの過程では0になります。
ロジャー:ゲームを思い立ちましたようにタスクバーの通知領域に明確にして頂きたい。I 必要 コPostQuitMessage.んかし、さらにprocesssだけではない。
クレイグ:さんに嬉しい状況をご説明:アプリケーションのコマンドラインインタフェースを可能にし、パラメータを指定したそうでない場所で保存します。が一度での走行を食い止める方法での結果は右クリックでのトレーに通知して選択し"exit"で終了.
今の私のユーザーがスクリプト/バッチのアプリです。彼らは全く問題ない開始からのバッチを表示しております。exeの名前や、チーフにいたんですが、でこだわって走ります。ないことを前提として一つの処理を提供するAPIを止められないので走りながらもかなり古い)が人工的に閉じてください。
同様に、無人コンピュータのスクリプトの処理を開始できるタスクのスケジューリングまたは操作制御プログラムのものが停止させる工程。
いることを明らかに私の状況で、再び、人のいる。
他のヒント
この仕事:
[DllImport("user32.dll", CharSet=CharSet.Auto)]
private static extern IntPtr FindWindow(string className, string windowName);
[DllImport("user32.dll", CharSet=CharSet.Auto)]
private static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam);
private const int WM_CLOSE = 0x10;
private const int WM_QUIT = 0x12;
public void SearchAndDestroy(string windowName)
{
IntPtr hWnd = FindWindow(null, windowName);
if (hWnd == IntPtr.Zero)
throw new Exception("Couldn't find window!");
SendMessage(hWnd, WM_CLOSE, IntPtr.Zero, IntPtr.Zero);
}
以降、一部の窓な対応 WM_CLOSE
, WM_QUIT
が送信されます。これらの宣言をするべきも32bitと64bit.
の場合はタスクバーにいただいています。またはもしかしてこのタスクバーの通知領域(通称、SysTray)?その場合でいます。
Win32プさんによる"メインウィンドウ"場合を除き、条約(メインウィンドウは、通話PostQuitMessageに対応しWM_DESTROYがメッセージループへの出口)。
のプログラムを、スパイ++.すべてのwindowsが所有する工程、を選択しSpy->プロセスからメインメニュー画面に移ります。この表示の木プロセス。り、これらの掘り下げるスレッドにします。これは適しているかを提示させていただ窓を処理します。※下の画面のクラスおよびキャプション.これらを使用できFindWindow(EnumWindows)のウィンドウハンドルです。
のウィンドウハンドル、送信することができWM_CLOSEはWM_SYSCOMMAND/SC_CLOSE(クリックし、'X'、画面キャプション)。こうを向上させることができ、プログラムが停止した。
ご注意思うからWin32の視点です。必要がある場合があります利用P/呼び出しまたはその他の仕掛けるこの仕事から。純ます。
問題を明確になぜだようこ:の場合のみユーザーインターフェースは、システムトレイにアイコンださい殺するもの工程。はどのように、ユーザーにアクセスす。場合には機械では"無人"、その懸念は、トレイアイコン?