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 ?