大虾们,帮我一下,把C++重写成C#
源址:http://blogs.msdn.com/fyuan/archive/2007/02/24/printing-documents-to-microsoft-xps-document-writer-without-user-interaction.aspx
谁帮我用C#重写一下,谢谢了。
(Printing documents to Microsoft XPS Document Writer without user interaction)
#include <windows.h>
#include <strsafe.h>
const wchar_t * Dialog_Class = L"#32770";
HRESULT PrintHTML(const wchar_t * pUri, const wchar_t * pFileName)
{
HRESULT hr;
STARTUPINFO si = { sizeof(si) };
PROCESS_INFORMATION pi;
wchar_t command[MAX_PATH];
hr = StringCchPrintf(command, _countof(command),
L"rundll32.exe mshtml.dll,PrintHTML \"%s\"", pUri);
if (FAILED(hr))
{
return hr;
}
if (CreateProcess(0, command, 0, 0, FALSE, 0, 0, 0, &si, &pi))
{
printf("\r\nStarting '%S'\r\n", command);
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
}
DWORD size = _countof(command);
GetDefaultPrinter(command, & size);
printf(" Default printer: '%S'\r\n", command);
printf("\r\nWaiting for Print dialog box\r\n");
Sleep(5 * 1000);
// Find Print Dialog box
HWND hWnd = FindWindow(Dialog_Class, L"Print");
// Print button
HWND hChild = FindWindowEx(hWnd, NULL, NULL, L"&Print");
GetWindowText(hChild, command, _countof(command));
printf(" hwnd = %p %p('%S')\r\n", hWnd, hChild, command);
// Press Print button
SendMessage (hChild, WM_IME_KEYDOWN, 'P', 0);
printf("\r\nWaiting for File Save dialog box\r\n");
Sleep(5 * 1000);
// Find Save File Dialog Box
hWnd = FindWindow(Dialog_Class, L"Save the file as");
hChild = FindWindowEx(hWnd, NULL, L"ComboBoxEx32", NULL);
hChild = FindWindowEx(hChild, NULL, L"ComboBox", NULL);
hChild = FindWindowEx(hChild, NULL, L"Edit", NULL); // File name edit control
printf(" hwnd = %p %p\r\n", hWnd, hChild);
// Enter file name
SendMessage(hChild, WM_SETTEXT, NULL, (LPARAM) pFileName);
Sleep(1000);
// Find Save button
hChild = FindWindowEx(hWnd, NULL, NULL, L"&Save");
GetWindowText(hChild, command, _countof(command));
printf(" hwnd = %p %p('%S')\r\n", hWnd, hChild, command);
// Press Save button
SendMessage (hChild, WM_IME_KEYDOWN, 'S', 0);
printf("\r\nSaving to '%S'\r\n", pFileName);
return hr;
}