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

szukaj na forum nowy temat odpowiedz

Strona [ 1 ] z 1

TomekMus ten post 07-02-2010 18:10


Użytkownik
Status: Offline
Dołączył: 23-10-2006

Witam,

Piszę sobie aplikację i potrzebuję wykorzystać taki manewr jak kiedyś widziałem podczas kiedy zapomniałem hasła do gg i ściągł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ć?
Przejdź na górę strony
cytuj
cimak ten post 07-02-2010 18:20
avatar

Użytkownik
Status: Offline
Dołączył: 01-12-2002
Skąd: Chatka na środku lasu
jak zrobic skroty klawiszowe? znajdziesz w googlach.
jak odczytac zawartosc edita..? - znajdziesz w googlach (tu chyba wystarczy potraktowac edita jak zwykle okno i GetWindowText() )

Ostatnio zmodyfikowany: 07-02-2010 18:22 przez cimak
Przejdź na górę strony
cytuj
TomekMus ten post 07-02-2010 19:05


Użytkownik
Status: Offline
Dołączył: 23-10-2006

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ół.

Ostatnio zmodyfikowany: 08-02-2010 09:31 przez TomekMus
Przejdź na górę strony
cytuj
olesio ten post 07-02-2010 19:37


Użytkownik
Status: Online
Dołączył: 04-04-2008

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;

Pozdrawiam: olesio
Przejdź na górę strony
cytuj
toyman ten post 07-02-2010 20:11


Użytkownik
Status: Offline
Dołączył: 10-05-2005
Skąd: Katowice/Rzeszów
Dobre. Szkoda, że nie działa na kontrolki formularzy strony WWW :(
Przejdź na górę strony
cytuj
cimak ten post 07-02-2010 21:59
avatar

Użytkownik
Status: Offline
Dołączył: 01-12-2002
Skąd: Chatka na środku lasu
TomekMus napisał:
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.
Przejdź na górę strony
cytuj
zbynio_k ten post 11-02-2010 08:04
avatar

Użytkownik
Status: Offline
Dołączył: 10-02-2010
Skąd: Katowice
olesio napisał:
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
jeśli program, który właśnie mozolnie napisałeś ruszył od pierwszego "kopa" to znaczy, że .....
na pewno gdzieś popełniłeś błąd
Przejdź na górę strony
cytuj
szukaj na forum nowy temat odpowiedz

Strona [ 1 ] z 1

1 użytkownik(ów) przegląda ten temat (1 gości)
(żadnych zarejestrowanych użytkowników)

Copyright © 2000-2006 by Coyote Group 0.9.3-pre3
Czas generowania strony: 0.0626 sek. (zapytań SQL: 9)