You are not logged in.

1

Thursday, August 19th 2010, 11:09am

HTML- Dokument aus C heraus drucken

Hallo zusammen,

und herzlichen dank schonmal fürs "Reinlesen".
Kurz zu mir: ich heisse Matthias, bin 29, und kurz vor dem Abgang an der FH- Regensburg- wird aber noch ein paar Monate dauern. Im Rahmen meines Mechatronik- Studiums hab ich zwei Semester C und ein Semester C++- Programmierung hinter mich gebracht, und die vor allem im C- Kurs erarbeiteten Grundlagen auch schon bei der Mikrocontroller- Programmierung (ATMEGAs) ohne allzu große Schwierigkeiten eingesetzt.
Seitdem bin ich mit der Idee "ein bisschen was kannst schon" durch die Gegend gerannt, aber seit ein paar Tagen merke ich, dass ich nichtmal den Lack an der Oberfläche ankratzen kann :D.

Zum konkreten "Problem":
Ich soll im Rahmen meiner Semester- Arbeitsstelle ein kleines Programm schreiben, das folgende Aufgaben haben soll:
- Einen Ordner auf Vorhandensein einer HTML- Datei prüfen
- Wenn Datei vorhanden, dann:
-> Datei ausdrucken
-> Datei in Log- Ordner wegsichern
-> Datei im Eingangsordner löschen

Das mit dem "Vorhandsein" hab ich schonmal im Griff, denke ich. Ich mache das über fopen(), und wenn der handle != NULL ist, soll die Datei mit
ShellExecute(NULL,TEXT("print"), TEXT("test.html"), NULL, NULL, SW_SHOW);
ausgedruckt werden.

Soweit rennt das schonmal.
Dumm ist nur, dass der Rechner immer den Druckerdialog öffnet, wo ich dann auf "Drucken" klicken muss, damit er die Datei am Standartdrucker ausgibt.
Weiss jemand von euch, ob und wie ich das umgehen kann? Wäre echt super :)
Ich verwende Visual Studio 2005 und C, weil ich mich da einfach wohler fühle...

Dann hab ich noch ein paar Fragen, was mein weiteres Vorgehen betrifft.
Mir macht Programmieren Spaß, sowohl auf der µC, als auch auf der SPS- und PC- Ebene.
Mit µC und SPS hab ich mich schon bisschen rumgeschlagen, und weiss mir zu helfen, bei PC bin ich noch ein kompletter Depp.
Könnt ihr mir da ein paar "Richtungstipps" geben, was GUIs, C++ und Windows- Shell- Literatur/ Tutorials/ Anregungen betrifft? Ich steh da ziemlich im Wald, und weiss mir eben noch nicht selbst zu helfen...

So. Das wars dann mal fürs erste, freue mich auf konstruktiv- kritische Antworten, aber bitte nicht vergessen, dass ihr es mit einem Anfänger zu tun habt, der ausser Halbwissen und gutem Willen noch nicht viel vorzuweisen hat :D

Grüße,
Matthias

2

Friday, August 20th 2010, 9:43pm

Hallo Matthias,
ich habe ein wenig gesucht und bisher eher Leute gefunden, die das Problem hatten, weil kein Dialog kam ;)
Hast du im Windows einen Defaultprinter angegeben?
Welches Programm öffnet sich denn zum Drucken? Internet Explorer?
Kann man dort einen Standarddrucker angeben und die EInstellung irgendwie speichern?
Lg

3

Sunday, August 22nd 2010, 8:39am

Hab einfach mal in die Suchmaschine:
html viewer quelltext
eingegeben.

Einer der vorderen Treffer:
http://www.heise.de/newsticker/meldung/G…ate-864431.html

So und nun zu deinem Problem wie weit drafst du Tools ausserhalb von C nutzen?
Spricht WinAPI, MFC oder was es da sonst noch alles gibt.

MfG bcc-fan

4

Tuesday, August 24th 2010, 9:54am

Hallo Leute,

danke für eure Antworten, und sorry für das lange Delay bis ich mich wieder zu Wort melde- aber hab mich am WE mal spontan dazu entschlossen, mich mit ner Lebensmittelvergiftung ins Bett zu legen ;).

@donut:
Ich hab dir mal nen Screenshot angehängt, wie das Fenster aussieht das sich öffnet. Als Standart- Drucker hab ich den "Drucker Elektronik" angegeben, wenn ich dann mit "Drucken" bestätige, spuckt der auch die test.html aus. Als Default- Browser ist bei mir der Firefox eingestellt, jetzt habe ich gerade auf deine Anfrage hin festgestellt, dass der auf dem Screenshot abgebildete Druckdialog aus dem IE kommt. Für den Firefox hab ich bereits ein Plugin Runtergeladen, welches beim Drucken den Dialog überspringt (Einstellbar).

@bbc-fan:
In Sachen der Tools bin ich frei. Bin gerade dabei mich in .NET einzulesen, und das Ganze auf C++ aufzuziehen. Keine Ahnung, ob das Sinn macht, oder ob ich da mit Kanonen auf Spatzen schiesse- nur ist mir halt bisher noch nix besseres eingefallen...

Kann ich mit ShellExecute- oder irgendwie anders- explizit das Programm festlegen, dass zum Öffnen verwendet werden soll? Oder weiss jemand, wie ich dem IE 8 den Druckdialog überspringen kann? Dann könnte ich mir das C++- Zeug sparen, wobei ich am WE beim Durchlesen der Schritt Für- Schritt Anleitung von MS fast bisschen Blut geleckt hab, was man damit alles machen kann :D.

Ich hab euch auch mal meinen noch auf Versuchsbasis bereits existenten Quelltext angehängt, der Vollständigkeit halber. Ist auf Basis eines Beispiels entstanden, deswegen die Umwege, die ich auf Grund des "Experimentalstadiums" noch nicht eliminert habe:

C/C++ Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include <stdio.h>
#include <windows.h>
#include <shellapi.h>
 
 
/* fileopen.c
   Zeigt die fopen() Funktion. */
 
#include <stdio.h>
 
int main(void)
{
  FILE *fp;
  char ch, filename[] = "test.html", mode[] = "r";
  char *charptr;
 
 
  while (1)
  {
 
/* Input filename and mode. */
   //printf("\nEnter a filename: ");
   //gets(filename);
//   filename = "test.html";
	//mode = "r";
   //charptr = &filename;
   //printf("\nEnter a mode (max 3 characters): ");
   //gets(mode);
 
/* Try to open the file. */
 
   if ((fp = fopen( filename, mode )) != NULL )
   {
	ShellExecute(NULL,TEXT("print"), TEXT("test.html"), NULL, NULL, SW_SHOW);
	printf("\nSuccessful opening %s in mode %s.\n",filename, mode);
	//getchar();
	fclose(fp);
	puts("Enter x to exit, any other to continue.");
	if ((ch = getc(stdin)) == 'x')
 	break;
	else
 	continue;
	}
   else
   {
	fprintf(stderr, "\nError opening file %s in mode %s.\n", filename, mode);
	puts("Enter x to exit, any other to try again.");
	if ((ch = getc(stdin)) == 'x')
 	break;
	else
 	continue;
   }
  }
  return 0;
}


Grüße,
Matthias
TheSaint has attached the following image:
  • screenshot_printing.JPG

Social bookmarks