1

私は本当に次の問題に苦しんでいます。私のシナリオに似た質問があることは知っていますが、どれもまったく同じシナリオではありません。

サイレントモードで実行する外部アプリケーションを起動するSSISカスタムコンポーネントを作成しました。何を試してもGUIは常に表示されます。コンソールアプリケーションで同じコードを使用しても、問題はまったく発生しません。SSISカスタムコンポーネント(dll)とコンソールアプリケーションの唯一の違いは、コンポーネントがSystem.Windows.Formsを参照し、BIDSを使用していることです。私は次のコードを使用しています。私が試してみたいヒントはありますか。

Process winscp = new Process();

winscp.StartInfo.FileName = @stExe;
winscp.StartInfo.Arguments = "/log=";
winscp.StartInfo.UseShellExecute = false;
winscp.StartInfo.RedirectStandardInput = true;
winscp.StartInfo.RedirectStandardOutput = true;
winscp.StartInfo.CreateNoWindow = true; 

winscp.Start();
4

3 に答える 3

0

ShowWindowを使用して可能です。プロセス ウィンドウの起動時ではなく、プロセス ウィンドウの作成後に ShowWindow メソッドが呼び出されるようにする必要があります。

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

プロセス ウィンドウが表示されたら、次を呼び出します。

ShowWindow(winscp.MainWindowHandle, 0)
于 2012-09-04T14:12:29.980 に答える
0

新しいプロセスのウィンドウを見つけて、できるだけ早く非表示にしてください。

Win32 API を使用し、

HWND hwnd = FindWindow(NULL, "Title");
ShowWindow(hwnd, SW_HIDE);
于 2012-09-04T14:13:42.870 に答える