Jak wykonać z zewnętrznego programu zrzut wartości?

0

Witam,

Piszę sobie aplikację i potrzebuję wykorzystać taki manewr jak kiedyś widziałem podczas kiedy zapomniałem hasła do gg i ściągnąłem sobie z neta taki programik co po najechaniu na pole z hasłem automatycznie pokazywał mi ukryte znaki pod nim. A ja potrzebuej coś prościejszego a mianowicie w aplikacji zewnętrzej mam dane typu Integer czyli jakąś liczbę od 0 do 999999 i chcę zrobić w mojej aplikacji że jak najadę myszką na inną aplikację i nacisnę jakiś klawisz skrutu myślę tu o CTRL+Q skopiuje mi wartość z formularza do mojej aplikacji.

Jednym słowem potrzemuje robić zrzut wartości liczbowych z innej aplikacji do mojej poprzez wywołanie klawisza skrutu.

Jak to zrobić?

0

jak zrobic skroty klawiszowe? znajdziesz w googlach.
jak odczytac zawartosc edita..? - znajdziesz w googlach (tu chyba wystarczy potraktowac edita jak zwykle okno i GetWindowText() )

0

Z tego co wyczytałem to GetWindowText() pobiera tylko dane z mojej aplikacji.

A ja chcę skopiować zawartość z innej aplikacji poprzez wywołanie skrutu klawiszowego będącego przypisanym do mojej aplikacji.

Schematycznie wygląda tak:

  • odpalam moją aplikację
  • minimalizuję ją (działa sobie w tle)
  • korzystam z innej aplikacji
  • w tym czasie jak korzystam z innej aplikacji chcę by daną wartość liczbową xxxxxx skopiować poprzez najechanie na pole myszką a następnie skrót CTRL+Q (obsługiwany przez moją aplikację) odbiera wartość liczbową i wykonuje dalsze czynności np zapisuje do pliku ale to szczegół.
0

Po pierwsze to jak cokolwiek piszesz używaj www.so.pwn.pl bo się nóż w kieszeni otwiera jak widzę "skrut".
Po drugie zgodnie z poniższym linkiem zrób sobie taki program jak poniżej, pokaże Ci się w labelu tekst, ale
tylko ze standardowych kontrolek edycyjnych. Na przykład pod Operą nie zobaczysz tekstów z pół edycyjnych.
http://www.delphitricks.com/source-code/windows/get_handle_and_class_name_from_the_current_mouse_pos.html
I jak zrobić sobie globalny HotKey po którego wciśnięciu masz wykonywaną jakiś kod, masz opisane na wielu
stronach w googlach. Na przykład tutaj masz: http://www.swissdelphicenter.ch/torry/showcode.php?id=147

//...
  public
    procedure ShowHwndAndClassName(CrPos : TPoint);
  end;

var
  Form1 : TForm1;

implementation

{$R *.dfm}

procedure TForm1.ShowHwndAndClassName(CrPos : TPoint);
var
  hWnd : THandle;
  aName, Text : array[0..255] of char;
begin
  hWnd := WindowFromPoint(CrPos);
  Label1.Caption := 'Handle : ' + IntToStr(hWnd);
  if boolean(GetClassName(hWnd, aName, 256)) then
    Label2.Caption := 'ClassName : ' + string(aName)
  else
    Label2.Caption := 'ClassName : not found';
  SendMessage(hWnd, WM_GETTEXT,
    SizeOf(Text), integer(@Text));
  Label3.Caption := 'Text :' + Text;
end;

procedure TForm1.FormCreate(Sender : TObject);
begin
  Form1.FormStyle := fsStayOnTop;
  Timer1.Interval := 50;
end;

procedure TForm1.Timer1Timer(Sender : TObject);
var
  rPos : TPoint;
begin
  if boolean(GetCursorPos(rPos)) then
    ShowHwndAndClassName(rPos);
end;
0

Dobre. Szkoda, że nie działa na kontrolki formularzy strony WWW :(

0
TomekMus napisał(a)

Z tego co wyczytałem to GetWindowText() pobiera tylko dane z mojej aplikacji.
A ja chcę skopiować zawartość z innej aplikacji poprzez wywołanie skrutu klawiszowego będącego przypisanym do mojej aplikacji.

a no dobrze wyczytales... tylko ze za szybko sie poddajesz. gdybys czytal dalej doszedłbyś do:
To retrieve the text of a control in another process, send a WM_GETTEXT message directly instead of calling GetWindowText.

0
olesio napisał(a)

Po pierwsze to jak cokolwiek piszesz używaj www.so.pwn.pl bo się nóż w kieszeni otwiera jak widzę "skrut".

bez wględu na wagę problemu, jaki zaprezentował @TomekMus
trudno sobie wyobrazić wykształcone społeczeństwo bez umiejętności pisania w ojczystym języku
dobrze, że środowiska programistyczne wskazują na błędną składnię :-P

</quote>

1 użytkowników online, w tym zalogowanych: 0, gości: 1