Avatar billede ctnn Nybegynder
26. september 2007 - 12:40 Der er 5 kommentarer og
1 løsning

Printe uden at print dialogen kommer frem

Hey allesammen.

Jeg forsøger at få print dialogen til at lade være med at dukke op, når jeg forsøger at printe ud fra min app, men jeg kan simpelthen ikke slå den ihjel. Jeg troede egentlig det var nok at sige at bruge CreateNoWindow = true

Nogle gode input?

Min kode ser sådan her ud.

foreach (string post in arrayPosts)
            {

                try
                {
                    accNum = post.Substring(0, 9);
                   
                    URL = post.Substring(post.IndexOf("http"), post.Length - post.IndexOf("http"));
                    Console.WriteLine(accNum + "-----" + URL);
                    //URL = HttpUtility.UrlEncode(URL);
                    Uri urluri = new Uri(URL);
                    rfile = URL.Trim();
                    client = new WebClient();
                    lfile = @"c:\" + DateTime.Now.Ticks + "." + ext;
                    client.DownloadFile(urluri, lfile);
                    proc = new Process();
                    proc.StartInfo.FileName = lfile;
                    proc.StartInfo.Verb = "Print";
                    proc.StartInfo.UseShellExecute = true;
                    proc.StartInfo.CreateNoWindow = true;
                    proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
                    proc.Start();
                    proc.Dispose();
                    client.Dispose();
                   

                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message);
                }
           
            }
Avatar billede nielle Nybegynder
26. september 2007 - 23:04 #1
Jeg kan godt fortælle hvad der går galt ... men derfra og så til at løse problemet, det er noget helt andet.

Din applikation (Internet Explore, I presume) bliver godt nok skjuldt som den skal; det er kun print-dialogen som vises. Problemet kommer af at denne jo slet ikke er en del af browseren - det er derimod en af Windows egne standard-dialoger som bliver kaldt.

Hvis du kunne skjule den, ville det så være en god ide? Nej egentlig ikke, for så kan du jo ikke tykke på Print-knappen og få udskrevet dit dokument.

Det idelle ville være hvis der var et andet verb end PRINT - et som kunne angive at man ønskede at printe på standard printeren. Imidlertid kan jeg ikke finde et - men det er muligvis bare min uvidenhed som åbenbare sig der

En mulig metode kunne være at tage fat i nogle Windows API-kald:

1) Find det aktive vindue - dvs. printer dialogen.
2) Send et enter-tast til denne.

Det største problem i den sammenhæng ville nok være at synkronisere dette med processen (proc).
Avatar billede ctnn Nybegynder
27. september 2007 - 10:44 #2
Heya.

Puha api kald, det lyder halv langhåret. Men er der virkelig ikke nogen anden måde at få printet en html side direkte ud på printeren?

men takker,kan jo være at du har tid til at hjælpe mig med det på et tidspunkt:) efter føsdagen selvfølgelig, som er i morgen, Tillyke til Nielle med i morgen :D
Avatar billede nielle Nybegynder
27. september 2007 - 18:47 #3
Måske kan det gøres sådan i stedet?

            string fileName = @"C:\index.htm";

            Process proc = new Process();
            proc.StartInfo.FileName = fileName;
            proc.StartInfo.Verb = "PRINT";
            proc.StartInfo.UseShellExecute = true;
            proc.StartInfo.CreateNoWindow = true;
            proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
            proc.Start();

            // Håber på at print dialogen når at blive vist...
            Console.WriteLine("Venter...");
            System.Threading.Thread.Sleep(5000);  // inden 5 sek.
            Console.WriteLine("Så skal der printes.");

            // Kræver at du opretter en reference til
            // System.Windows.Forms.dll

            // Sen en <Enter> til den aktive dialog
            System.Windows.Forms.SendKeys.SendWait("{ENTER}");

            proc.Dispose();
Avatar billede ctnn Nybegynder
28. september 2007 - 10:52 #4
Niels, post dit svar, det der skal du ha point for, it works like a charm ;D
Avatar billede nielle Nybegynder
28. september 2007 - 12:36 #5
Svar :^)
Avatar billede ctnn Nybegynder
28. september 2007 - 13:01 #6
1000 procent
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester