AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

2 fragen zu HWND und HWND+Canvas

Ein Thema von k4ni · begonnen am 20. Okt 2007 · letzter Beitrag vom 21. Okt 2007
Antwort Antwort
k4ni

Registriert seit: 17. Jul 2007
Ort: Ulm
258 Beiträge
 
Delphi 7 Enterprise
 
#1

2 fragen zu HWND und HWND+Canvas

  Alt 20. Okt 2007, 18:49
hallo leute,

Ich hab hier mal nach etwas gesucht das mit dem ich durch Canvas die farbe checken kann.
Dann hat mir jemand das hier gegeben:
http://forum.dsdt.info/viewtopic.php...3384bda0b2150d

Ich hab das dann auch benützt und geht alles super, doch ich will nicht das er es von dem gesammten desktop/bildschirm nimmt sondern nur von einem bestimmten fenster.
Also das ist was ich gerade benütze:


Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var
 DCanvas: TCanvas;
 DHandle: HWND;
 currentcaption, currentminus2: Integer;
begin
 DHandle:=GetDC(0);
 if DHandle<>0 then
 begin
   try
     DCanvas:=TCanvas.Create;
     try
     DCanvas.Handle:=DHandle;
     if DCanvas.Pixels[293, 335] = RGB(239, 239, 239 )
       then
       begin
       Timer1.Enabled := false;
       Timer2.Enabled := false;

       Label4.Caption := inicurrent;
       Label4.Visible := true;
       Label5.Visible := true;


       if Checkbox1.Checked = true then
       PlaySound(PChar('logged.wav'),0,SND_ASYNC or SND_LOOP);
       
       ShowMessage (inicurrent);
       PlaySound(nil,0,0);
        end
     finally
       DCanvas.Free;
     end;
    finally
      if ReleaseDc(0, DHandle)<>1 then
        RaiseLastOSError;
    end;
 end
 else
   RaiseLastOSError;
end;
So nun hab ich versucht das fenster (in diesem fall MapleStory) zu nehmen, also
 DHandle:= FindWindow(NIL, 'MapleStory'); Und hab dann versucht es so dann nur von diesem einen fenster aus zu lesen, aber funktioniert nicht
Ist das überhaupt möglich ? auch wenn es minimiert ist? Wenn es nicht möglich ist wenn es minimiert ist dann brauch ich es garnicht.

nur 2. Frage;
Ich hab mal von irgendjemanden das hier bekommen:
Delphi-Quellcode:
procedure EnterText(AText: String);
var lCount : Integer;
    lScanCode : Smallint;
    lWithAlt,
    lWithCtrl,
    lWithShift : Boolean;
begin
  for lCount := 1 To Length(AText) Do
  begin
    lScanCode := VkKeyScan(AText[lCount]);
    //Ermitteln ob Shift gedrückt wurde
    lWithShift := lScanCode and (1 shl 8) <> 0;
    //Ermitteln ob Strg gedrückt wurde
    lWithCtrl := lScanCode and (1 shl 9) <> 0;
    //Ermitteln ob Alt gedrückt wurde
    lWithAlt := lScanCode and (1 shl 10) <> 0;

    if lWithShift then
      keybd_event(VK_SHIFT, 0, 0, 0);
    if lWithCtrl then
      keybd_event(VK_CONTROL, 0, 0, 0);
    if lWithAlt then
      keybd_event(VK_MENU, 0, 0, 0);

    keybd_event(lScanCode, 0, 0, 0);
    keybd_event(lScanCode, 0, KEYEVENTF_KEYUP, 0);

    if lWithAlt then
      keybd_event(VK_MENU, 0, KEYEVENTF_KEYUP, 0);
    if lWithCtrl then
      keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);
    if lWithShift then
      keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0);
  end;
end;
Weis jemand was ich machen muss damit es das keybd_event nur an ein bestimmtes window sendet ?
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: 2 fragen zu HWND und HWND+Canvas

  Alt 20. Okt 2007, 19:15
Dein DHandle ist kein HWND sondern ein sogenannter Device Context, also das Handle einer Zeichenfläche. Um dieses Handle von einem anderen Fenster zu erhalten, musst du den Parameter von GetDC ändern. MSDN-Library durchsuchenGetDC

Die 2. Frage hat überhaupt nichts mit der ersten zu tun. Eröffne für sie bitte einen eigenen Thread.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
k4ni

Registriert seit: 17. Jul 2007
Ort: Ulm
258 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: 2 fragen zu HWND und HWND+Canvas

  Alt 20. Okt 2007, 19:52
dankee!!
Aber am anfang steht doch
Delphi-Quellcode:
var
 DCanvas: TCanvas;
 DHandle: HWND; // <---- HIER
 currentcaption, currentminus2: Integer;
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: 2 fragen zu HWND und HWND+Canvas

  Alt 20. Okt 2007, 19:55
Das muss streng genommen HDC heißen, also Handle eines Device Contexts. Jedoch sind alle Handles (THandle, HDC, HWND, HHook, hFile und wie sie alle heißen) letztlich nur Cardinals und können vom Compiler auch nicht unterschieden werden.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
k4ni

Registriert seit: 17. Jul 2007
Ort: Ulm
258 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: 2 fragen zu HWND und HWND+Canvas

  Alt 20. Okt 2007, 20:02
wenn ich das jetzt richtig verstehe müsste das hier gehen ?!:
Delphi-Quellcode:
var
 DCanvas: TCanvas;
 DHandle: HWND;
 damn: HWND;
 currentcaption, currentminus2: Integer;
begin
 damn := FindWindow(NIL, 'MapleStory');
 DHandle:=GetDC(damn);
 if DHandle<>0 then
 begin
   try
     DCanvas:=TCanvas.Create;
     try
     DCanvas.Handle:=DHandle;
     if DCanvas.Pixels[293, 335] = RGB(239, 239, 239 )
       then
       begin
       Timer1.Enabled := false;
       Timer2.Enabled := false;

       Label4.Caption := inicurrent;
       Label4.Visible := true;
       Label5.Visible := true;


       Ini := TIniFile.Create(ExtractFilePath(ParamStr(0))+'LastPin_CorrectPin.txt');
       Ini.WriteString('rCracker', 'Correct Pin', inicurrent);

       if Checkbox1.Checked = true then
       PlaySound(PChar('logged.wav'),0,SND_ASYNC or SND_LOOP);
       
       ShowMessage ('Eingeloggt, Pin ist: '+inicurrent);
       PlaySound(nil,0,0);
        end
     finally
       DCanvas.Free;
     end;
    finally
      if ReleaseDc(0, DHandle)<>1 then
        RaiseLastOSError;
    end;
 end
 else
   RaiseLastOSError;
end;
Hab es mal versucht auf dem desktop und es ging immernoch.
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: 2 fragen zu HWND und HWND+Canvas

  Alt 20. Okt 2007, 20:06
Zitat:
Hab es mal versucht auf dem desktop und es ging immernoch.
Was soll das heißen?
Übrigens solltest du auch ReleaseDC mit dem Handle aufrufen, zu den Api-Funktion sollte man immer in der MSDN schauen.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
k4ni

Registriert seit: 17. Jul 2007
Ort: Ulm
258 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: 2 fragen zu HWND und HWND+Canvas

  Alt 20. Okt 2007, 20:07
is sollte ja eigentlich nur ingame gehen also im MapleStory window. Aber es hat die farbe auch auf dem desktop gefunden.
  Mit Zitat antworten Zitat
k4ni

Registriert seit: 17. Jul 2007
Ort: Ulm
258 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: 2 fragen zu HWND und HWND+Canvas

  Alt 20. Okt 2007, 21:05
eigentlich müsste es so laut msdn funktionieren, aber geht irgendwie nicht, wer hat ne idee?
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#9

Re: 2 fragen zu HWND und HWND+Canvas

  Alt 21. Okt 2007, 13:30
Ja, z.B. folgende: Maple malt nicht auf dem Window DC sondern auf einem Overlay wie z.B. von OpenGL oder DirectX.

(Ich sollte dazu erwähnen, dass mir Maple nichts sagt und ich auch nicht kenne)
  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 02:50 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