0

ファイルのアップロードを自動的に処理する C# コードを作成しようとしています。実装する必要があるのは、ファイルを開くダイアログからファイルを選択することです。

users32.dll FindWindow()メソッドを使用してウィンドウを見つけることができました。しかし、ダイアログで入力を設定し、選択したファイルを承認する方法がわかりません(ファイルを選択して[OK]を押します)。

これまでの私のコード:

[DllImport("user32.dll")]
public static extern int FindWindow(string lpClassName, string lpWindowName);

public const int WM_SYSCOMMAND = 0x0112;
public const int SC_CLOSE = 0xF060;
public const int WM_SETTEXT = 0x000C;

private void ChooseFile()
{
    // retrieve the handler of the window  
    int iHandle = FindWindow("#32770", "File Upload");
    if (iHandle > 0)
    {
        //Choose File
        //Press OK
    }
}

どんな助けでも大歓迎です。

4

3 に答える 3

1

あなたがやろうとしていることは少し奇妙です。Win32関数を呼び出していますが、必要なのはOpenFileDialogクラスを使用することだけです。これは、ここでは適切な.NETの方法です(MSDN OpenFileDialog) 。

OpenFileDialog dlg = new OpenFileDialog();
DialogResult res = dlg.ShowDialog();
if (res == DialogResult.OK)
{
    string filePath = dlg.FileName;
    // do your upload logic here
}
于 2013-01-15T08:40:26.290 に答える
1

C# クラス OpenFileDialog (http://www.dotnetperls.com/openfiledialog) があり、user32.dll には必要ありません。

于 2013-01-15T08:39:29.920 に答える
0

研究の割り当ての後、私は解決策を見つけました。

キーボードをシミュレートし、フォーカスされたウィンドウに文字列を送信する Windows.Form.SendKeys クラスを使用しました。

コードは次のとおりです。

 SendKeys.SendWait(fileInfo.FullName);
 Thread.Sleep(2000);
 SendKeys.SendWait("{ENTER}");
 Thread.Sleep(5000);
于 2013-01-16T15:01:40.553 に答える