65.9K
CodeProject is changing. Read more.
Home

Using the Free CutePDF Writer without User Intervention

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.33/5 (3 votes)

May 3, 2012

CPOL
viewsIcon

18792

This is an alternative for "Using the Free CutePDF Writer without User Intervention"

Introduction

The free CutePDF utility doesn't allow you to interact with it, the following article will explain how to overcome this limitation. 

Using the code 

The following snippet will illustrate how to get the main thread to press the enter button as soon as the PDF Save File dialogue is shown. 

[DllImport("user32.dll")]
static extern bool PostMessage(IntPtr hWnd, UInt32 Msg, int wParam, int lParam);
private static void ConfirmPDFDialog()
{
    bool found = false; //bool to hold if I have found the process yet
    while (!found)
    {
        Process[] processes = Process.GetProcessesByName("CPWSave"); //Grab the PDF Dialog process
        if (processes.Length > 0) //length will be greater than 0 when it has spawned
        {
            if(processes[0].MainWindowHandle != IntPtr.Zero) //If the IntPtr == Zero, the window hasn't been displayed
            {
                IntPtr pFoundWindow = processes[0].MainWindowHandle; //Grab a handle to the window
                PostMessage(pFoundWindow, 0x100, (int)Keys.Enter, 0); //Press the enter key and send the message to the window
                found = true; //Window has been found so exit the while
            }
        }
    }
    //give it some room to breath so that the files are actually created
    Thread.Sleep(500);
}