Registriert seit: 15. Jan 2013
6 Beiträge
Delphi 2007 Professional
|
Programm in fernsteuern WinXP geht Win7 nein
15. Jan 2013, 11:14
Hallo,
ich habe ein kleines Prog geschrieben, dass Daten zur keycard-Programmierung an ein Drittprogramm übergeben soll.
Unter WinXP mit Delphi 2007 programmiert und getestet - funktioniert ohne Probleme.
Aber Programm funktioniert unter Win7 überhaupt nicht. Ich bekomme keine handles kann dem Programm nicht den Focus geben
usw...
Getestet habe ich bereits das Programm als Administrator auszuführen um Probleme mit der UAC zu umgehen ... leider keine
Verbesserung
Dann habe ich spaßeshalber WinSpy probiert und WinSpy bekommt auch ohne Administrator rechte die handles... und ich
frage die handles ja dachte ich genauso ab.
Nun meine Frage - muß ich beim compiler von Delphi 2007 irgendetwas einstellen, damit das Programm auch in Win7
funktioniert oder wo ist hier mein Denkfehler?
meine Codeauszüge sieht so aus:
Code:
procedure tform1.Keyprog;
var myhandle: thandle;
result: boolean;
parentwnd, wnd: hwnd;
i: integer;
fensterpos: TRect;
ApNr, Tage, BS: string;
const dialock = 'Dialock Hotel - DIALOCK Hotel';
begin
// Check ob Dialock Hotel läuft
if (EXE_Running('dlhw.exe', false)=true) then begin
// Check in Gast
sleep(100);
result:=AppActivate(pchar(dialock)); //sleep(10);
SendKeys('{ENTER}', true); sleep(10);
// Raum Nr.
apnr:=trim(apartmentnr.Text);
if pos('.',apnr)>0 then delete(apnr,pos('.',apnr),1);
apnr:='A'+apnr;
parentwnd:=0; wnd:=0;
result:=AppActivate(pchar(dialock)); sleep(10);
parentwnd := FindWindow('ThunderRT6MDIForm','Dialock Hotel - DIALOCK Hotel');
parentwnd := FindWindowEx(parentwnd, 0, 'MDIClient', nil);
parentwnd := FindWindowEx(parentwnd, 0, 'ThunderRT6FormDC', nil);
parentwnd := FindWindowEx(parentwnd, 0, 'AfxWnd40', nil);
wnd := FindWindowEx2(parentwnd,'ThunderRT6TextBox', 5); //sleep(10);
SendMessage(Wnd,WM_SETFOCUS,0,0);
SendMessage(Wnd,WM_SETTEXT,0,LongInt(PChar(apnr))); sleep(10);
// Key Nr.
sendkeys('{TAB}', true); sleep(10);
i:=strtoint(kartenanzahl.Text);
if i>1 then for i:=1 to i-1 do SendKeys('{DOWN}', true); sleep(5);
// Dauer(Tage)
i:=0; tage:='';
tage:=inttostr(daysbetween(now,datumbis.DateTime+1));
parentwnd:=0; wnd:=0;
result:=AppActivate(pchar(dialock)); sleep(10);
parentwnd := FindWindow('ThunderRT6MDIForm','Dialock Hotel - DIALOCK Hotel');
parentwnd := FindWindowEx(parentwnd, 0, 'MDIClient', nil);
parentwnd := FindWindowEx(parentwnd, 0, 'ThunderRT6FormDC', nil);
parentwnd := FindWindowEx(parentwnd, 0, 'ThunderRT6PictureBoxDC', nil);
parentwnd := FindWindowEx(parentwnd, 0, 'ThunderRT6ComboBox', nil);
wnd := FindWindowEx(parentwnd, 0, 'Edit', nil);
SendMessage(Wnd,WM_SETFOCUS,0,0);
for i:=1 to length(tage) do begin
BS:=copy(tage,i,1);
sendkeys(pchar(BS),true); sleep(5);
end;
end else begin
showmessage ('Bitte starten Sie zuerst Dialock Hotel');
BTkartenprog.enabled:=true;
end;
end;
Tappe im Moment völlig im dunkeln warum unter Win7 nichts funktioniert..
Danke
Ralf
|