Новое в окнах форм/дескриптор окна.
Пытаюсь сохранить файлы в разных местах.
Изображение диалогового окна сохранения файла:
введите здесь описание изображения
Я могу получить дескриптор поля редактирования полей редактирования имени файла в диалоговом окне сохранения файла. Возможность вставить путь.
введите здесь описание изображения
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
файл2 не сохраняется в D:\Mine\Folder3\file2, а сохраняется в D:\Mine\Folder1\file2
Похоже, он указывает только на первое место, независимо от пути.
SaveFileDialog
имеет такие свойства, какFileName
, которые позволяют вам устанавливать эти значения, почему вместо этого вы пытаетесь использовать собственные API Windows? - person Ian Kemp   schedule 24.08.2020