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

您有 C# 类 OpenFileDialog (http://www.dotnetperls.com/openfiledialog),对于 user32.dll 来说不是必需的。

于 2013-01-15T08:39:29.920 回答
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 回答
0

经过大量研究,我找到了解决方案。

我使用了模拟键盘并将字符串发送到焦点窗口的 Windodows.Form.SendKeys 类。

这是代码:

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