Autor Beitrag
stephantom
Hält's aus hier
Beiträge: 5

Win 98SE, Win XP, Win 2003
D2005
BeitragVerfasst: Mo 16.01.06 19:16 
Hallo!

Ich versuche mich gerade mit einer Service Application. Dabei rufe ich eine procedure aus einer externen DLL auf, die ein Fenster erzeugen möchte:
ausblenden Delphi-Quelltext
1:
SampleProcedure(0);					


Nun funktioniert das in der Service Application natürlich nicht. Gibt es eine Möglichkeit ein virtuelles Windowhandle zu erzeugen, das nicht wirklich angezeigt wird sondern nur für das Programm im Speicher existiert? In diesem Fenster ist nämlich keine Useraktion nötig/möglich. Wenn man der Procedure 0 übergibt wird ein neues Fenster erzeugt, ansonsten werden noch vordefinierte HWNDs akzeptiert. Eine andere (unschönere) Möglichkeit wäre natürlich, dem Programm zu ermöglichen, ein Fenster zu erstellen.
Ich vermute, dass das Erzeugen eines neuen Handles daran scheitert, dass es dafür kein Elternelement gibt.

Bitte helft mir :-)
stephantom

_________________
Irgendwas ist ja immer...
0xCC
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 150



BeitragVerfasst: Mo 16.01.06 19:20 
probier mal AllocateHWnd()
stephantom Threadstarter
Hält's aus hier
Beiträge: 5

Win 98SE, Win XP, Win 2003
D2005
BeitragVerfasst: Mo 16.01.06 20:04 
Danke für deine Antwort.
Ich habe mich jetzt ein bisschen über AllocateHWnd schlau gemacht und schlussendlich einen Versuch mit folgendem Code gestartet:
ausblenden Delphi-Quelltext
1:
2:
newhwnd := Classes.AllocateHWnd(nil);
tmp := TWAIN_AcquireNative(newhwnd,0);


Produziert aber dasselbe Resultat wie mit einer 0 als Argument. Wenn ich den Service installieren (per Kommandozeile via aservice.exe /install) und dann das Bestätigungsfenster offen lasse funktioniert alles wie es soll. Natürlich wird hier ein Fenster angezeigt, aber das soll mal meine geringste Sorge sein. Wichtiger wäre, dass auch ein Fenster erzeugt werden kann (sichtbar oder nicht), wenn keines da ist.
Es ist auch gut möglich, dass ich die Funktion falsch angewendet habe!?

_________________
Irgendwas ist ja immer...
0xCC
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 150



BeitragVerfasst: Mo 16.01.06 23:16 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
  MyWndHandle:=AllocateHWnd(MsgHandler);
...
procedure TForm1.MsgHandler(var msg:TMessage);
begin
  with Msg do
    case Msg of
      WM_CLOSE:begin 
       ...