Einzelnen Beitrag anzeigen

delbone

Registriert seit: 15. Jan 2013
6 Beiträge
 
Delphi 2007 Professional
 
#1

Programm in fernsteuern WinXP geht Win7 nein

  Alt 15. Jan 2013, 10: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
  Mit Zitat antworten Zitat