Chmmm, zabieram się do pisania programu który będzie odkrywał zagwiazdkowane Edity pokazując w to miejsce hasło.
Macie pomysł jak się do tego zabrać i co będzie potrzebne?
Chmmm, zabieram się do pisania programu który będzie odkrywał zagwiazdkowane Edity pokazując w to miejsce hasło.
Macie pomysł jak się do tego zabrać i co będzie potrzebne?
WindowFromPoint + SendMessage
W jednym z ostatnich tematów (układ okresowy??) drugi post (przperaszam i nie pamiętam autora) był kod dotyczący GET_TEXT okna będocego w miejscu myszki. Od tego zacznij. Ale ni daje to pełnej satysfakcji, bo na zasadniczą część Editów systemowych nie działa. Ale zawsze jakiś punkt odniesienia.
PS> jeżeli ci się uda, to opisz jak, jestem bardzo zainteresowany...
Coś mi się zdaje że będę musiał poczytać o punktorach i o uchwytach
a moshe nie ... ;)
nakierowujesz sobie kursorek na pole z hasłem i enter
var
P:TPoint;
EH:HWND;
DL:integer;
Haslo:String;
procedure TForm1.Button1Click(Sender: TObject);
begin
GetCursorPos(P);
EH:=WindowFromPoint(P);
DL:=SendMessage(EH,WM_GETTEXTLENGTH,0,0);
inc(DL);
SetLength(Haslo,DL);
SendMessage(EH,WM_GETTEXT,DL,longint(Haslo));
ShowMessage(Haslo);
end;
Ale to fajnie działa,
teraz tylko drobne modyfikacje...i program odkrywający gwiazdki gotowy
THX [browar]
W jednym z ostatnich tematów (układ okresowy??) drugi post (przperaszam i nie pamiętam autora) był kod dotyczący GET_TEXT okna będocego w miejscu myszki. Od tego zacznij. Ale ni daje to pełnej satysfakcji, bo na zasadniczą część Editów systemowych nie działa. Ale zawsze jakiś punkt odniesienia.
To co podał Rudy jest w przybliżeniu tym samym kodem... Teraz (Win98) PanelSterowania -> Hasła -> Zdalna administracja
Tak dla przykładu... Nie działa...
Projekt ukończony :)
Ma jeszcze kilka drobnych błedów ale to kwestia czasu.
Krecik, Ty chyba chciałeś źródła jak chcesz to mogę Ci je podesłać.
http://lofix.iglu.cz/programy/hawkeye.zip
ze zrodlami (chyba)..jak nie ma to pusty mail, to podesle
Chmm, znowy mi coś wpadło do głowy...
A gdyby tak troszkę zmodyfikować ten kod, tak aby starał się pobrać KOLOR w miejscu gdzie znajduje się aktualnie kursor.
Już gdzieś takie coś widziałem...
Pobrany kolor wyświetlał by się w komponencie...Shape.
Zaś kolor RGB w postaci liczbowej wyświetlał by się w Edit'ie.
Do tego niezbędny by był Timer podpięty do kursora
Macie jeszcze jakieś twórcze myśli?
masz cały komponencik:
{HColorPicker.pas
Color under cursor picker copyright (c) HAKGERSoft 2000 - 2003
This unit is owned by HAKGERSoft, any modifications without HAKGERSoft permision
is prohibited!
Author:
Johnny_Bit [[email protected]]
================================================================================
Unit description:
Unit of component that helps to get color under cursor. Just assign OnTimer to
procedure, that uses Color property.
================================================================================
History:
27.03.2003 : ver 0.1 alpha 3
-Color is not stored
-Changed default interval
-About property
-HAKGERSoft Defs
12.02.2003 : ver 0.1 alpha 2
-Corrected code for get color (now resource-save, non-thread-safe)
31.01.2003 : ver 0.1 alpha
-Completed
-Color property (readonly!)
-Started
================================================================================
}
unit HColorPicker;
interface
uses
Windows, Messages, SysUtils, Classes, ExtCtrls, Graphics;
type
THColorPicker = class(TTimer)
private
Function GetColor: TColor;
function GetAbout: String;
Procedure SetColor(AColor: TColor);
Procedure SetAbout(AAbout: String);
protected
ScreenCanvas: TCanvas;
public
Constructor Create(AOwner: TComponent);Override;
Destructor Destroy;Override;
published
property Enabled;
property Color: TColor Read GetColor write SetColor stored False;
property Interval default 5;
Property OnTimer;
property About: String Read GetAbout write SetAbout stored False;
end;
{$I HAKGERSoftDefs.inc}
UniName='ColorPicker component';
Version='0.1 alpha 3';
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('HAKGERSoft Components', [THColorPicker]);
end;
{ THColorPicker }
constructor THColorPicker.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
Interval:=5;
ScreenCanvas:=TCanvas.Create;
ScreenCanvas.Handle:=GetWindowDC(GetDesktopWindow);
end;
destructor THColorPicker.Destroy;
begin
ReleaseDC(ScreenCanvas.Handle, GetWindowDC(GetDesktopWindow));
ScreenCanvas.Free;
inherited;
end;
function THColorPicker.GetAbout: String;
begin
Result:=Format(AboutHAKGERSoft,[UniName, Version]);
end;
{$WARNINGS OFF}
function THColorPicker.GetColor: TColor;
var
Point: TPoint;
begin
If Enabled and not (csDesigning in ComponentState) then //Component _MUST_ be Enabled & _MUSN'T be @ desing to do work :-]
begin
GetCursorPos(Point);
Result:=ScreenCanvas.Pixels[Point.X, Point.Y];
end;
end;
{$WARNINGS ON}
procedure THColorPicker.SetAbout(AAbout: String);
begin
end;
procedure THColorPicker.SetColor(AColor: TColor);
begin
end;
end.
plik HAKGERSoftDefs.inc:
const
AboutHAKGERSoft='HAKGERSoft''s %s version %s';
Można też tak?
var
Color: TColor;
Point: TPoint;
Canvas: TCanvas;
begin
Canvas:=TCanvas.Create;
Canvas.Handle:=GetDC(0);
GetCursorPos(Point);
Color:=Canvas.Pixels[Point.x,Point.y];
Form1.Color:=Color;
Canvas.Destroy;
end;
Na co Ci SetAbout i SetColor? Przecież to są własności ReadOnly...
Rozumiem Wasze podejście programowe do tematu - jednak gdyby komuś coś nie wychodziło - proponuje poszukać w necie SnadBoy's Revelation - wersja 2 działa na wszystkie edity i nie tylko (checkbtny, radiobtny) - prawdziwa rewelacja