AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Programm in fernsteuern WinXP geht Win7 nein
Thema durchsuchen
Ansicht
Themen-Optionen

Programm in fernsteuern WinXP geht Win7 nein

Ein Thema von delbone · begonnen am 15. Jan 2013 · letzter Beitrag vom 7. Feb 2013
Antwort Antwort
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
CCRDude

Registriert seit: 9. Jun 2011
677 Beiträge
 
FreePascal / Lazarus
 
#2

AW: Programm in fernsteuern WinXP geht Win7 nein

  Alt 15. Jan 2013, 10:39
Dein schnellster Freund dürfte der Debugger sein. Funktioniert EXE_Running überhaupt?

Dein zweiter Freund ist der Debugger oder eine minimale Fehlerbehandlung, die zumindest per OutputDebugString mitteilt, wenn ein FindWindow(Ex) etc. fehlschlägt.

Kurz: nimm den Debugger, steppe durch das Programm, und teile uns mit, an welcher Stelle Dein Code vom erwarteten Verhalten abweicht, dann fällt es leichter, Fehlerursachen zu vermuten und Tipps zu geben
  Mit Zitat antworten Zitat
delbone

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

AW: Programm in fernsteuern WinXP geht Win7 nein

  Alt 15. Jan 2013, 11:27
Hi,

das Problem mit dem Debuggen ist ja, das es in meiner Entwicklungsumgebung XP/Delphi 2007 funktioniert und in Win7
nicht... ich habe schon alle handle mit showmessage in win7 angezeigt, dass ergebnis war immer 0

Ich kann auch nicht auf dem Firmenrechner mein Delphi installieren. Wie gesagt unter XP funktioniert es ohne Probleme.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.545 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Programm in fernsteuern WinXP geht Win7 nein

  Alt 15. Jan 2013, 11:43
Zitat:
Delphi-Quellcode:
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);
Was passiert denn, wenn parentwnd in dieser Kette einmal 0 wird, weil das entsprechende Fenster nicht gefunden wurde? Du solltest nach jeder Zuweisung auf 0 prüfen, dann kann man auch eine entsprechende Meldung bringen, was da ggf. schief läuft. Ob diese Meldung kommen soll, ließe sich z.B. mittels Kommandozeilen-Parameter angeben.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
CCRDude

Registriert seit: 9. Jun 2011
677 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Programm in fernsteuern WinXP geht Win7 nein

  Alt 16. Jan 2013, 08:47
Wenn Du auf dem Win7 kein Delphi installieren kannst, nimm doch einfach den Remote-Debugger Oder versuche is mit ner virtuellen Maschine (hier ein kleines Hilfsmittel von mir zu Delphi-Remote-Debuggen in VMs).

Außerdem gibt es noch WinDbg, damit bekommst Du Debugausgaben von OutputDebugString mit. Etwas komfortabler als ShowMessage

Wenn Du aber per ShowMessage schon Handles angezeigt bekommen hast, gehe ich davon aus, dass EXE_Running zumindest funktioniert?

Läuft dlhw.exe elevated oder nicht?
Hat Dein Programm ein gültiges Manifest?
Selbsterstellt oder das von Delphi?
Hat das selbsterstellte Manifest auch das UI-Einfluss-Flag gesetzt (eigentlich dachte ich, das wäre hierfür noch nicht notwendig, aber wer weiss...)?
  Mit Zitat antworten Zitat
Benutzerbild von rweinzierl
rweinzierl

Registriert seit: 22. Mär 2005
98 Beiträge
 
#6

AW: Programm in fernsteuern WinXP geht Win7 nein

  Alt 16. Jan 2013, 09:11
Hallo


Ich glaube mich dunkel zu errinnern das unter Windows 7 die Fernsteuermöglichkeiten aus Sicherheitsgründen (auch mit Adminrechten ) nicht mehr gehen.


Sonst könnte man ja jede Sicherheitswarnung einfach wegdrücken.


(Sicher bin ich aber nicht)

mfg

Reinhold
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:10 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz