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”进入文件夹路径。
新 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”进入文件夹路径。