我有winapi c#将网页保存为pdf。应用程序在网页上使用control + P并按Enter键。我的默认打印机是“细微差别pdf”,我想将文件保存为pdf。我的代码如下所示:
static class Program
{
[DllImport("user32.dll")]
public static extern int SetForegroundWindow(IntPtr hWnd);
[DllImport("User32.dll")]
public static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, string lParam);
[DllImport("user32.dll")]
public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
[DllImport("user32.dll")]
public static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);
[STAThread]
static void Main()
{
Boolean Check = true;
string text = "MyFileName";
while (Check)
{
Process[] processes = Process.GetProcessesByName("iexplore");
foreach (Process proc in processes)
{
SetForegroundWindow(proc.MainWindowHandle);
SendKeys.SendWait("^(p)");
SendKeys.SendWait("{ENTER}");
var handle = FindWindow(null, "Save As");
Console.WriteLine("handle {0}", handle);
//SendMessage(handle, 0x000C, IntPtr.Zero, text);
SendKeys.SendWait("{ENTER}");
}
Check = false;
}
}
}
此代码将文件名保存为“https ___ www.google.pdf”。我想更改文件名(突出显示)。
我该怎么做?有什么指针吗? 谢谢你的帮助。
答案 0 :(得分:0)
鉴于您当前的方法,并且默认情况下突出显示文本,为什么不直接发送您想要的文件名?
var handle = FindWindow(null, "Save As");
Console.WriteLine("handle {0}", handle);
SendKeys.SendWait(text);
SendKeys.SendWait("{ENTER}");
您可能需要先突出显示该文字。这可以是双击,或直接访问控件,例如var filename = FindEdit(handle, "File Name:")
访问它,以防默认情况下未突出显示。