hwnd window 处理在不同位置保存文件的问题

hwnd window handle problem in saving file in different locations

新 windows forms/window 句柄。

正在尝试将文件保存在不同的位置。

保存文件对话框图像:

enter image description here

我能够在保存文件对话框中获取文件名编辑框的编辑框句柄。 可以粘贴路径。

enter image description here

private const int WM_SETTEXT = 0x000C;

IntPtr edithWnd = IntPtr.Zero;
edithWnd = FindWindowEx(edithWnd, IntPtr.Zero, "Edit", null);
SendMessage(edithWnd, WM_SETTEXT, IntPtr.Zero, "D:\Mine\Folder1\file");

以上代码在文件名文本框中设置文件路径。

现在,通过获取其句柄并发送点击来单击“保存”按钮。

private const int BM_CLICK = 0x00F5;

IntPtr handle = GetForegroundWindow(); // Save As dialog
IntPtr edithWnd = FindWindowEx(handle, IntPtr.Zero, "Button", "&Save");           
SendMessage(edithWnd, BM_CLICK, IntPtr.Zero, null);

它工作正常,但是在循环中使用此代码将多个文件保存在不同位置时,它无法正常工作,它只将所有文件保存在一个位置

例如,文件保存在“D:\Mine\Folder1\file”

file1 没有保存在“D:\Mine\Folder2\file1”中,而是保存在“D:\Mine\Folder1\file1

file2 没有保存在“D:\Mine\Folder3\file2”中,而是保存在“D:\Mine\Folder1\file2

好像只指向第一个位置,不管路径是什么。

为什么不先进入想要的路径再保存文件呢

对我有用..

SendMessage(edithWnd, WM_SETTEXT, IntPtr.Zero, "D:\Mine\Folder1\");
// Hit enter
SendKeys.SendWait("{ENTER}");
// Now click the save button, file name will be there already, in case if it is 
// not paste the file name first and then perform save button click

您可能需要先聚焦文件路径,然后按“Enter”设置焦点,然后按“Enter”进入文件夹路径。