Sterowanie inną aplikacją - brak klasy obiektu

dział ogólny

Sterowanie inną aplikacją - brak klasy obiektu

Nowy postprzez majkel » niedziela, 21 listopada 2010, 20:06

Używam Borlanda C++ Bulider 6 i zajmuję się sterowaniem inną aplikacja . Pobieram nazwy klasy za pomocą WinID. Problem jest w tym dla każdego elementu tego okna ( programu) nazwa klasy i tytuł jest taki sam. Jak dobrać się do np. elementu zaznaczonego na załączniku.
Proszę o pomoc.

control.jpg
Nie masz wystarczających uprawnień, aby zobaczyć pliki załączone do tego postu.
Avatar użytkownika
majkel
Bladawiec
Bladawiec
 
Posty: 8
Dołączył(a): niedziela, 21 listopada 2010, 19:58
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: brak systemu
Kompilator: brak kompilatora
Gadu Gadu: 0
    Windows XPFirefox

Re: Sterowanie inną aplikacją - brak klasy obiektu

Nowy postprzez Cyfrowy Baron » niedziela, 21 listopada 2010, 22:46

Miałem podobny problem z Firefox 3.x. Niestety nie da się tego obejść. Jeżeli wskazujesz wybrany element a WinID pokazuje tylko nazwę klasy okna, to nie da się pobrać uchwytu do jego kontrolek.
Podobny temat był już poruszany w wątku: Wysyłanie adresu URL do tego samego okna przeglądarki.

Ten program wygląda jakoś dziwnie, jak dla Windows 3.1 i nie wydaje się być zbudowany w oparciu o API systemu Windows. Co to za program?



PS. Wrzuciłeś na forum plik graficzny w formacie *.BMP. By obejść zabezpieczenie forum zmieniłeś mu rozszerzenie na JPG i za to dostajesz ostrzeżenie. Nie rób tak więcej, bo zablokuję Tobie konto.
Podmieniłem już plik na JPG, a Ty zaopatrz się w jakiś darmowy program do obsługi grafiki, może irfanView. Program potrafi konwertować pliki graficzne między różnymi formatami.

Program IrfanView 4.27
Spolszczenie do IrfanView 4.27
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Sterowanie inną aplikacją - brak klasy obiektu

Nowy postprzez majkel » poniedziałek, 22 listopada 2010, 10:34

Jeżeli nie mogę otrzymać uchwytu do kontrolki podobnej do "UpDownClick" obok zaznaczonego tekstu to czy da radę np przechwycić np proces który generuje ta kontrolka ?. Prosił bym o jakąś wskazówkowe (podpowiedź).
ps. Z plikiem *.BMP nie miałem złych intencji
Avatar użytkownika
majkel
Bladawiec
Bladawiec
 
Posty: 8
Dołączył(a): niedziela, 21 listopada 2010, 19:58
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: brak systemu
Kompilator: brak kompilatora
Gadu Gadu: 0
    Windows VistaFirefox

Re: Sterowanie inną aplikacją - brak klasy obiektu

Nowy postprzez Cyfrowy Baron » poniedziałek, 22 listopada 2010, 11:30

czy da radę np przechwycić np proces który generuje ta kontrolka ?.

Chodzi o komunikaty. Można przechwytywać komunikaty systemowe montując haki, ale ta kontrolka chyba nie wysyła żadnych komunikatów do systemu, lecz tylko w obrębie aplikacji, więc raczej nie da się tego komunikatu przechwycić. No chyba, że chodzi Tobie o czytanie z procesu aplikacji, ale to wymaga znajomości assemblera, a ja niewiele o tym wiem, więc tutaj nie pomogę.

Gdybyś podał co to za program i skąd go można pobrać to sam bym to sprawdził.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Sterowanie inną aplikacją - brak klasy obiektu

Nowy postprzez majkel » poniedziałek, 22 listopada 2010, 13:24

Ta kontrolka na bieżąco musi wysyłać dane gdyż używając połączenia na kablu eternetowym steruję urządzeniem
Avatar użytkownika
majkel
Bladawiec
Bladawiec
 
Posty: 8
Dołączył(a): niedziela, 21 listopada 2010, 19:58
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: brak systemu
Kompilator: brak kompilatora
Gadu Gadu: 0
    Windows VistaFirefox

Re: Sterowanie inną aplikacją - brak klasy obiektu

Nowy postprzez Cyfrowy Baron » poniedziałek, 22 listopada 2010, 13:56

No ale co mam Tobie odpowiedzieć, nie wiedząc z jakim programem mam do czynienia. Skoro wysyła do systemu jakiś komunikat, to trzeba sprawdzić jakiego rodzaju to jest komunikat. Potem trzeba w programie zamontować haka i przechwytywać komunikaty. Przykład montowania haka, do przechwytywania komunikatów wysyłanych z klawiatury do systemu znajdziesz w serwisie Cyfrowy Baron w dziale: porady -> api -> Keyloger, czyli przechwytywanie wciśnięcia klawiszy we wszystkich programach. Wystarczy w tym kodzie zmienić rodzaj przechwytywanych komunikatów na te które wysyła program i już masz to czego potrzebujesz. W podanej poradzie program przechwytuje komunikat WM_KEYDOWN, czyli wciśnięcie przycisku klawiatury na dół. Listę komunikatów, które można przechwycić znajdziesz w pliku pomocy. Na zakładce Index w polu Look for wpisz WM_

help.png


Czy ten program wymaga do działania JAVA lub .Net Framework?
Nie masz wystarczających uprawnień, aby zobaczyć pliki załączone do tego postu.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Sterowanie inną aplikacją - brak klasy obiektu

Nowy postprzez majkel » poniedziałek, 22 listopada 2010, 23:52

Program nie wymaga JAVA ani Net Framework.
Spróbuje skorzystać z Twojej ostaniej rady o efektach poinformuje.
Dziękuję
Avatar użytkownika
majkel
Bladawiec
Bladawiec
 
Posty: 8
Dołączył(a): niedziela, 21 listopada 2010, 19:58
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: brak systemu
Kompilator: brak kompilatora
Gadu Gadu: 0
    Windows XPFirefox

Re: Sterowanie inną aplikacją - brak klasy obiektu

Nowy postprzez Cyfrowy Baron » wtorek, 23 listopada 2010, 09:45

Program nie wymaga JAVA ani Net Framework.


Jak to sprawdziłeś, czy wogóle sprawdziłeś?! Jeżeli korzystasz z WinXP to jedno i drugie masz zainstalowane. Chodziło mi o to czy ten program jest oparty na Javie już .NETFramework.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Sterowanie inną aplikacją - brak klasy obiektu

Nowy postprzez Cyfrowy Baron » wtorek, 30 listopada 2010, 13:44

Sprawę utrudnia fakt, że nie wiem co to za program i nie mogę go sprawdzić. Jeżeli program posiada klasę okna, a jego elementy mają tą samą nazwę klasy #32770, to można by się dobrać do tego komponentu po jego nazwie.

Zapoznaj się z tym postem: http://programowanie.cal.pl/forum/viewtopic.php?f=2&t=1151#p7952
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Sterowanie inną aplikacją - brak klasy obiektu

Nowy postprzez majkel » wtorek, 30 listopada 2010, 14:36

Dzięki za pamięć dziś wieczorem się tym zajmę .
Avatar użytkownika
majkel
Bladawiec
Bladawiec
 
Posty: 8
Dołączył(a): niedziela, 21 listopada 2010, 19:58
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: brak systemu
Kompilator: brak kompilatora
Gadu Gadu: 0
    Windows VistaFirefox

Re: Sterowanie inną aplikacją - brak klasy obiektu

Nowy postprzez majkel » czwartek, 2 grudnia 2010, 13:49

Mam dalej problem gdyż dalej nie mogę dobrać się do zaznaczonego elementu . Program Total Commander Ultimate Prime w wtyczce procesy pokazuje mi następujące rzeczy: Obrazek.
Program sterowany działa tak że jeżeli jest fokus na obiekcie (zaznaczonym czarną linia poście na początku) można kursorami Up Down zmieniać wartości . Czy można wykorzystać ten fakt tak żeby fokus był na innym programie. Proszę o jakąś podpowiedź .
Avatar użytkownika
majkel
Bladawiec
Bladawiec
 
Posty: 8
Dołączył(a): niedziela, 21 listopada 2010, 19:58
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: brak systemu
Kompilator: brak kompilatora
Gadu Gadu: 0
    Windows VistaFirefox

Re: Sterowanie inną aplikacją - brak klasy obiektu

Nowy postprzez Cyfrowy Baron » czwartek, 2 grudnia 2010, 14:22

Czy można wykorzystać ten fakt tak żeby fokus był na innym programie.


W jednej chwili focus może być tylko na jednym oknie na raz. Chcesz przenieść focus na inne okno to kliknij na to okno lub za pomocą kodu przywołaj okno na pierwszy plan.

Co do tego programu to sytuację dodatkowo komplikuje fakt, że jest to aplikacja typu MDI, czyli okno w oknie, by dobrać się do okna wtórnego (MDIChild) trzeba najpierw pobrać uchwyt do okna głównego (MDIForm). Jednak okno wtórne nie wydaje się być zbudowane w oparciu o API systemu Windows. Nie widzę tutaj żadnych klas, to nie jest standardowa aplikacja okienkowa i nie wydaje mi się by można było dobrać się do jej kontrolek.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Sterowanie inną aplikacją - brak klasy obiektu

Nowy postprzez majkel » czwartek, 2 grudnia 2010, 15:45

Czyli nie ma już żadnej możliwości (sposobu) żeby moc wpłynąć na naciskanie przycisków obiektu ? A sposób żeby podawać współrzędne okna (tylko i tak fokus nie może być nawet na oknie programu którego chce napisać ) ?
Avatar użytkownika
majkel
Bladawiec
Bladawiec
 
Posty: 8
Dołączył(a): niedziela, 21 listopada 2010, 19:58
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: brak systemu
Kompilator: brak kompilatora
Gadu Gadu: 0
    Windows VistaFirefox

Re: Sterowanie inną aplikacją - brak klasy obiektu

Nowy postprzez Cyfrowy Baron » czwartek, 2 grudnia 2010, 19:37

Czyli nie ma już żadnej możliwości (sposobu) żeby moc wpłynąć na naciskanie przycisków obiektu ?


Możesz zasymulować kliknięcie myszką w wybranej pozycji, ale okno programu w których chcesz kliknąć musi być na wierzchu. Opisałem to w tym poście: http://programowanie.cal.pl/forum/viewtopic.php?f=2&t=1084&p=7583&hilit=MozillaUIWindowClass#p7583



A sposób żeby podawać współrzędne okna


Nie rozumiem! Chcesz zmienić współrzędne okna, czy je pobrać. Jeżeli pobrać to przykład jest w przytoczonym wyżej poście, ale jeszcze powtórzę.

KOD cpp:     UKRYJ  
  HWND hWnd = FindWindow(NULL, L"Capsto");

 if(hWnd == NULL)
 {
  ShowMessage("Nie odnaleziono okna programu");
  return;
 }

 TRect wRect;
 GetWindowRect(hWnd, &wRect);

 int wLeft = wRect.Left;
 int wTop = wRect.Top;
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Sterowanie inną aplikacją - brak klasy obiektu

Nowy postprzez majkel » środa, 29 grudnia 2010, 13:05

Witam Szanownego Kolegę. Jeżeli to możliwe chciałem odgrzać temat. Z gonie z Kolegi zaleceniami skorzystałem z poleceń " keybd_event ". Niestety takie rozwiązanie łączy się z utratą fokusa. Przeglądając program odkryłem takie okienko. Chce zeby do podkreślonego czarną linią TextEdita można było wpisywać automatycznie tekst z mojej aplikacji. Obok pokazane są właściwości tego programu używając WinID. Czy da się z tym coś zrobić . Proszę o pomoc.
Nie masz wystarczających uprawnień, aby zobaczyć pliki załączone do tego postu.
Avatar użytkownika
majkel
Bladawiec
Bladawiec
 
Posty: 8
Dołączył(a): niedziela, 21 listopada 2010, 19:58
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: brak systemu
Kompilator: brak kompilatora
Gadu Gadu: 0
    Windows VistaFirefox

Następna strona

  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Ogólne problemy z programowaniem

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 3 gości

cron