设置Windows对话框输入

时间:2013-01-15 08:33:06

标签: c# winapi

我正在尝试编写一个自动处理文件上传的C#代码。 我需要实现的是从打开文件对话框中选择一个文件:

我设法使用users32.dll FindWindow()方法找到了该窗口。 但我不知道如何在对话框中设置输入并批准所选文件(选择文件并按“确定”)。

我的代码到目前为止:

[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
    }
}

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分: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
}

答案 2 :(得分:0)

经过各种研究后,我找到了解决方案。

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

这是代码:

 SendKeys.SendWait(fileInfo.FullName);
 Thread.Sleep(2000);
 SendKeys.SendWait("{ENTER}");
 Thread.Sleep(5000);