CYFROWY BARON • PROGRAMOWANIE • Zobacz wątek - Uchwyt do programu

Uchwyt do programu

dział ogólny

Uchwyt do programu

Nowy postprzez Pitek » sobota, 27 listopada 2010, 12:38

Witam!
Mam następujący problem. Chciałbym napisać program który pracowałby w tle (systray) i "nasłuchiwałby" jakiegoś określonego skrótu klawiszowego nawet jeżeli uruchomione byłyby inne aplikacje. Problem w tym że nie potrafię się dobrać do uchwytu tej aplikacji ponieważ klasa tego programy jak na załączonym screenie ma wartość #32770 i jest to klasa systemowa jednak właściwość Title programu WinID ma wartość Ventrilo bo tak nazywa się program. Czy nie dało by się jakoś do niego dobrać po nazwie skoro nie ma jego szczegółowej klasy, lub zrobić to w jakiś inny sposób ? Program miałby czekać na ten określony skrót i wykonywać w razie jego użycia dwie akcje mianowicie klikanie na jeden przycisk, który raz rozłącza a za drugim razem ponownie łączy.
Ventrilo to program do rozmów łączący się z serwerem używany głównie do gier zespołowych aby się porozumiewać.
Jeżeli brakuje jeszcze jakichś informacji do rozwiązania tego problemu postaram się je dostarczyć.
Bardzo proszę o pomoc.

Pozdrawiam pitek3010
Nie masz wystarczających uprawnień, aby zobaczyć pliki załączone do tego postu.
Komputer służy do tego aby ułatwić Ci pracę, której bez niego w ogóle byś nie miał.
E.Murphy
http://piotrekprogramy.pl
Avatar użytkownika
Pitek
Kreacjusz
Kreacjusz
 
Posty: 290
Dołączył(a): środa, 14 października 2009, 14:53
Lokalizacja: Rybnik/Wrocław
Podziękował : 43
Otrzymał podziękowań: 5
System operacyjny: Win 7 Ultimate 64bit SP1 / Ubuntu 19.04 LTS 64bit
Kompilator: Embarcadero RAD Studio XE2
SKYPE: pitek3010
Gadu Gadu: 7060047
    Windows XPFirefox

Re: Uchwyt do programu

Nowy postprzez Cyfrowy Baron » sobota, 27 listopada 2010, 13:12

Można pobrać uchwyt do programu tylko po nazwie jego okna, opisałem to dość szczegółowo w serwisie Cyfrowy Baron w dziale: teoria -> Sterowanie obcym programem z poziomu własnego poprzez wysyłanie komunikatów, oraz teoria -> Umieszczanie okna obcego programu w programie własnym.
Służy do tego funkcja FindWindow(char *class_name, char *window_name). Jak widzisz funkcja oczekuje dwóch argumentów, pierwszy to nazwa klasy okna, drugi to nazwa okna. Jeżeli nie znasz klasy to podajesz zamiast nazwy klasy wartość NULL. Podanie tylko jednego argumentu zadziała, o ile w systemie uruchomione jest tylko jedno okna z taka nazwą:


KOD cpp:     UKRYJ  
HWND hWnd = FinDWindow(NULL, "Ventrilo");




Co do nasłuchiwania na na jakiś konkretny skrót klawiaturowy to nie rozumiem. Chcesz napisać program, który będzie w tle czekać na ten skrót klawiaturowy, ale co to ma wspólnego z programem Ventrilo? Opisz problem tak by to było zrozumiałe, bo tak jak to napisałeś , to wychodzi z tego masło maślane.

Za ten post autor Cyfrowy Baron otrzymał podziękowanie od:
Pitek
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: Uchwyt do programu

Nowy postprzez Pitek » sobota, 27 listopada 2010, 14:48

Program miałby działać w tle czekać na skrót w razie użycia skrótu wykonać operacje na programie Ventrilo klikać na Disconnect Przycisk ten jest widoczny w miejscu Connect na screenie, i potem z powrotem kliknąć na Connect.
Program musi działać na Windows 7 bo na tym systemie pojawia się problem który chce obejść tym programem a w tle ma pracować dlatego żeby nie trzeba było wychodzić z gry.



Mam jeszcze jeden problem, nagle za którymś otwarciem środowiska przy kompilacji pojawia mi się błąd i program się nie uruchamia co robić ?
Repair nie pomaga nawet usunąłem i zainstalowałem środowisko jeszcze raz i też nic jak można wyczyścić ten błąd wcześniej pokazywał mi też że żadnego pliku z sekcji Include nie widzi ale to po reinstalacji zniknęło.
Oraz czy mógłby mi ktoś podać co ma się znajdować standardowo w każdym z pół w Options -> Paths and Directories chyba tam jest błąd bardzo o to proszę :|
Nie masz wystarczających uprawnień, aby zobaczyć pliki załączone do tego postu.
Komputer służy do tego aby ułatwić Ci pracę, której bez niego w ogóle byś nie miał.
E.Murphy
http://piotrekprogramy.pl
Avatar użytkownika
Pitek
Kreacjusz
Kreacjusz
 
Posty: 290
Dołączył(a): środa, 14 października 2009, 14:53
Lokalizacja: Rybnik/Wrocław
Podziękował : 43
Otrzymał podziękowań: 5
System operacyjny: Win 7 Ultimate 64bit SP1 / Ubuntu 19.04 LTS 64bit
Kompilator: Embarcadero RAD Studio XE2
SKYPE: pitek3010
Gadu Gadu: 7060047
    Windows XPFirefox

Re: Uchwyt do programu

Nowy postprzez Cyfrowy Baron » sobota, 27 listopada 2010, 17:02

Co się tyczy błędu. Gdzie zapisujesz projekt? Zaraz po utworzeniu nowego projektu powinieneś go zapisać do jakiegoś nowego katalogu, ja np. mam na dysku D katalog główny Embarcadero_project_2010 i w tym katalogu dla każdego nowego projektu tworzę nowy podkatalog, a w tym podkatalogu dopiero zapisuję nowy projekt. Dlaczego o tym piszę? Dlatego, że z komunikatu błędu może wynikać, że ty tworzysz projekty w jakimś jednym domyślnym katalogu. Przed skompilowaniem projektu trzeba go najpierw zapisać.
Menu: Tools -> Options:
tools-options.png

environment.png




Opisuj problem nie tak jak Ty go rozumiesz, bo inni Ciebie nie zrozumieją!

Program miałby działać w tle czekać na skrót w razie użycia skrótu wykonać operacje


Co za skrót człowieku?! Jak rozumiem chodzi Tobie o klawisz skrótu.
Program, którego okno jest aktywne, czyli aktualnie na wierzchu, czyli focus znajduje się na tym oknie, czyli pracujesz w tym oknie, bez problemu przechwyci kombinację klawiszy, a wystarczy posłużyć się metodą WindowProc do przechwytywania komunikatów, a opisałem to w tym poście: http://www.programowanie.cal.pl/forum/viewtopic.php?f=2&t=1144#p7896
Ty jednak chcesz by program działał w tle i przechwytywał komunikaty, tutaj komunikaty nadchodzące z klawiatury. W tej sytuacji trzeba zamontować hak systemowy. Przykład takiego haka systemowego znajdziesz w serwisie Cyfrowy Baron w dziale: porady -> API -> Keyloger, czyli przechwytywanie wciśnięcia klawiszy we wszystkich programach.
Problem może jednak stanowić sam Windows 7, gdyż nie wiem czy system zabezpieczeń pozwoli na zamontowanie haka systemowego.
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: Uchwyt do programu

Nowy postprzez Pitek » sobota, 27 listopada 2010, 17:31

Tak chodzi o klawisz skrótu podczas działania programu nie ważne w jakim stanie by się znajdował ma nasłuchiwać tego klawisza skrótu jeżeli się pojawi to wykonać operacje z nim związaną. A co do tych ścieżek z Paths and Directories to bardzo bym prosił o podanie całego ciągu z tych okienek ponieważ na screenie są one obcięte.
A co do zapisu projektów to zawsze normalnie było wszystko ok też tworzyłem sobie podfoldery w standardowej ścieżce Moje dokumenty -> RAD Studio nawet tymczasowo odpalał kompilowane programy bez zapisu a teraz się coś zepsuło :(. Jak można wyczyścić wszyskie pozostałości po RAD Studio tak aby po zainstalowaniu było wszystko świeże bo nawet po usunięciu i czyszczeniu przez Jv16 PowerTools i tak pamiętał mi ustawienia !!
Komputer służy do tego aby ułatwić Ci pracę, której bez niego w ogóle byś nie miał.
E.Murphy
http://piotrekprogramy.pl
Avatar użytkownika
Pitek
Kreacjusz
Kreacjusz
 
Posty: 290
Dołączył(a): środa, 14 października 2009, 14:53
Lokalizacja: Rybnik/Wrocław
Podziękował : 43
Otrzymał podziękowań: 5
System operacyjny: Win 7 Ultimate 64bit SP1 / Ubuntu 19.04 LTS 64bit
Kompilator: Embarcadero RAD Studio XE2
SKYPE: pitek3010
Gadu Gadu: 7060047
    Windows XPFirefox

Re: Uchwyt do programu

Nowy postprzez Cyfrowy Baron » sobota, 27 listopada 2010, 20:15

Tak chodzi o klawisz skrótu podczas działania programu nie ważne w jakim stanie by się znajdował ma nasłuchiwać tego klawisza skrótu jeżeli się pojawi to wykonać operacje z nim związaną.


Już odpowiedziałem na to pytanie. Zamotuj hak systemowy, przykład w serwisie Cyfrowy Baron.



A co do tych ścieżek z Paths and Directories to bardzo bym prosił o podanie całego ciągu z tych okienek ponieważ na screenie są one obcięte.

To są ścieżki dostępu do niestandardowych bibliotek, których u Ciebie po prostu nie ma. Poza tym tutaj błędu być nie może, gdyż podczas instalacji środowisko zawsze ustawia te ścieżki. Błąd jest raczej powodowany przez system, lub jakąś niestandardową bibliotekę.


Jak można wyczyścić wszyskie pozostałości po RAD Studio tak aby po zainstalowaniu było wszystko świeże bo nawet po usunięciu i czyszczeniu przez Jv16 PowerTools i tak pamiętał mi ustawienia !!


Usuń katalog z pozostałościami z lokalizacji:

.\Program Files\Embarcadero
.\Documents and Settings\nazwa użytkownika\Dane aplikacji\Embarcadero
.\Documents and Settings\All Users\Dane aplikacji\Embarcadero
.\Moje Dokumenty\RAD Studio


klucze rejestru o ile podczas reinstalacji nie zostały usunięte:

HKEY_CURRENT_USER\Software\CodeGear
HKEY_CURRENT_USER\Software\Embarcadero

HKEY_LOCAL_MACHINE\SOFTWARE\CodeGear
HKEY_LOCAL_MACHINE\SOFTWARE\Embarcadero

HKEY_USERS\S-1-5-21-xxxxxxxxxx-xxxxxxxxx-xxxxxxxxxx-xxxx\Software\CodeGear
HKEY_USERS\S-1-5-21-xxxxxxxxxx-xxxxxxxxx-xxxxxxxxxx-xxxx\Software\Embarcadero


gdzie x to jakaś liczba.

Za ten post autor Cyfrowy Baron otrzymał podziękowanie od:
Pitek
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: Uchwyt do programu

Nowy postprzez Pitek » sobota, 27 listopada 2010, 23:37

Co do tej porady z zakładaniem haka to nie potrafię rozróżnić co jest do rozpoznawania tego co "dzieje się" na klawiaturze a co jest zapisem tego do pliku, czy mógłby Pan jakoś mi to wyodrębnić na przykładzie np. skrótu klawiszowego : Ctrl + F12 Bardzo proszę :)
Proszę nie zrozumieć mnie jakobym oczekiwał gotowego rozwiązania ale może jakaś podpowiedź co jest co albo coś .... :|
Chodziłoby mi o nasłuchiwanie na ten skrót klawiszowy a w razie jego wystąpienia dokonanie jakiejś akcji.
Komputer służy do tego aby ułatwić Ci pracę, której bez niego w ogóle byś nie miał.
E.Murphy
http://piotrekprogramy.pl
Avatar użytkownika
Pitek
Kreacjusz
Kreacjusz
 
Posty: 290
Dołączył(a): środa, 14 października 2009, 14:53
Lokalizacja: Rybnik/Wrocław
Podziękował : 43
Otrzymał podziękowań: 5
System operacyjny: Win 7 Ultimate 64bit SP1 / Ubuntu 19.04 LTS 64bit
Kompilator: Embarcadero RAD Studio XE2
SKYPE: pitek3010
Gadu Gadu: 7060047
    Windows XPFirefox

Re: Uchwyt do programu

Nowy postprzez Cyfrowy Baron » niedziela, 28 listopada 2010, 12:24

Okazuje się, że w nowej wersji środowiska nie da się zamontować haka w aplikacji okienkowej, lecz trzeba to robić poprzez bibliotekę DLL. Przeprowadziłem kilka testów, ale nic z tego mi nie wyszło. Nie mogę podłączyć biblioteki pod aplikację, albo hak nie działa.
W związku z powyższym proponuję prostsze rozwiązanie oparte na rejestracji gorącego klawisza.


Plik nagłówkowy np. Unit1.h:
KOD cpp:     UKRYJ  
private:
        TWndMethod HotKey;
        void __fastcall GetHotKey(TMessage &Msg);



Plik źródłowy np. Unit1.cpp:
KOD cpp:     UKRYJ  
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
 RegisterHotKey(Handle, 1, MOD_CONTROL, VK_F1);
 /* MOD_CONTROL = Ctrl; VK_F1 = F1 */

 HotKey = this->WindowProc;
 this->WindowProc = GetHotKey;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::GetHotKey(TMessage &Msg)
{
 if(Msg.Msg == WM_HOTKEY && Msg.WParam == TRUE)
 {
  /* tutaj program wykonuje jakąś operację, po przechwyceniu gorącego klawisza, np. wywołuje funkcję wysyłającą komunikat do innej aplikacji */
 }

 HotKey(Msg);
}
//---------------------------------------------------------------------------


Gorący klawisz działa nawet wtedy gdy aplikacja jest nieaktywna, np. zminimalizowana do zasobnika systemowego.

Za ten post autor Cyfrowy Baron otrzymał podziękowania - 2:
Corvis, Pitek
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: Uchwyt do programu

Nowy postprzez Pitek » poniedziałek, 29 listopada 2010, 19:02

Super! Bardzo dziękuję o to mi chodziło ale nie do końca ponieważ program w razie użycia minimalizuje mi grę, jak się tego pozbyć ? Czy będzie to działało na Windows 7!? ;)



P.S. Mogę (nie wiem już który raz :D ) prosić o te ustawienia do wyłączenia tych podpowiedz odnoszących się do plików nagłówkowych bo to strasznie zwalnia, denerwuje i niekiedy zawiesza środowisko a tak będzie to już na forum każdy będzie mógł zerknąć ;) Bardzo proszę.
Komputer służy do tego aby ułatwić Ci pracę, której bez niego w ogóle byś nie miał.
E.Murphy
http://piotrekprogramy.pl
Avatar użytkownika
Pitek
Kreacjusz
Kreacjusz
 
Posty: 290
Dołączył(a): środa, 14 października 2009, 14:53
Lokalizacja: Rybnik/Wrocław
Podziękował : 43
Otrzymał podziękowań: 5
System operacyjny: Win 7 Ultimate 64bit SP1 / Ubuntu 19.04 LTS 64bit
Kompilator: Embarcadero RAD Studio XE2
SKYPE: pitek3010
Gadu Gadu: 7060047
    Windows XPFirefox

Re: Uchwyt do programu

Nowy postprzez Cyfrowy Baron » poniedziałek, 29 listopada 2010, 21:11

program w razie użycia minimalizuje mi grę, jak się tego pozbyć ?

Nie można się tego pozbyć, chyba że uruchomisz grę w trybie okienkowym wtedy nie będzie się minimalizować. Ewentualnie stwórz aplikację konsolowa, wtedy nie będzie okna, lub tak napisz aplikację okienkową by działała w tle bez przywoływania okna. Przywołanie okna programu zawsze przełączy ekran z gry na okienko.


Mogę (nie wiem już który raz :D ) prosić o te ustawienia do wyłączenia tych podpowiedz odnoszących się do plików nagłówkowych bo to strasznie zwalnia


W menu: Tools -> Options, w sekcji: Editor Options -> Code Insight, odznaczyć: Tooltip Expression evaluation oraz Tooltip symbol insight.

options.png
Nie masz wystarczających uprawnień, aby zobaczyć pliki załączone do tego postu.

Za ten post autor Cyfrowy Baron otrzymał podziękowanie od:
Pitek
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: Uchwyt do programu

Nowy postprzez Pitek » poniedziałek, 29 listopada 2010, 21:38

Dziękuję za te ustawienia, a jak napisać aplikację okienkową aby działała bez przywoływania okna :o :|
Nigdy czegoś takiego nie robiłem, sądziłem że tak się nie da mogę prosić o jakieś wskazówki ?
Komputer służy do tego aby ułatwić Ci pracę, której bez niego w ogóle byś nie miał.
E.Murphy
http://piotrekprogramy.pl
Avatar użytkownika
Pitek
Kreacjusz
Kreacjusz
 
Posty: 290
Dołączył(a): środa, 14 października 2009, 14:53
Lokalizacja: Rybnik/Wrocław
Podziękował : 43
Otrzymał podziękowań: 5
System operacyjny: Win 7 Ultimate 64bit SP1 / Ubuntu 19.04 LTS 64bit
Kompilator: Embarcadero RAD Studio XE2
SKYPE: pitek3010
Gadu Gadu: 7060047
    Windows XPFirefox

Re: Uchwyt do programu

Nowy postprzez Cyfrowy Baron » wtorek, 30 listopada 2010, 10:51

Dziękuję za te ustawienia, a jak napisać aplikację okienkową aby działała bez przywoływania okna


Bzdury wypisujesz! :o
Aplikacja okienkowa zawsze ma okienka i będzie uruchamiać się z okienkiem. Chodziło mi o to, że jak już zminimalizujesz tą aplikację do zasobnika systemowego (SysTray) to okno programu jest zminimalizowane. W celu wykonania jakichkolwiek operacji przez program zminimalizowany nie musisz przywoływać okna tegoż programu, czyli jak program przechwyci Hot Key (gorący klawisz) to wykonuje operację w tle, czyli nie przywracasz okna, ono nadal pozostaje zminimalizowane. By wysłać komunikat z poleceniem do jakiegoś okna programu, program wysyłający nie musi być wcale widoczny na pulpicie, może być zminimalizowany. Program odbierający powinien być jednak widoczny, ale to nie problem. Przed uruchomieniem gry nie minimalizujesz okna programu odbierającego. Podobnie zresztą możesz postąpić z programem wysyłającym. Jeżeli okna nie będą zminimalizowane to podczas wykonywania operacji, bez przywoływania okien na pierwszy plan, gra nie zostanie zminimalizowana. Tak działają np. trainery do gier.
Podsumowując, program wysyłający może być zminimalizowany, ale program odbierający nie.



Co się tyczy braku klasy w tym Twoim programie, to jest to oczywiście nieprawda. Okno tego programu jest typu DialogBox, a na stronach Microsoft'u możemy znaleźć taką informację:


#32770 is the default class name for dialogs boxes.



Czyli wszystkie okna typu Dialog Box w systemie Windows XP i nowszych pewnie też, mają nazwę klasy #32770.



Przeprowadziłem testy z programem do rozłączania połączenia internetowego w programie dostępowym PLAY ONLINE.

KOD cpp:     UKRYJ  
void __fastcall SendMessageToApp(void)
{
  HWND hWnd = FindWindow(NULL, L"PLAY ONLINE");

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



  HWND fWnd1 = FindWindowEx(hWnd, 0, L"#32770", NULL);

  if(fWnd1 == NULL)
  {
   ShowMessage("Nie odnaleziono obiektu 1");
   return;
  }

  HWND fWnd2 = FindWindowEx(fWnd1, 0, L"#32770", NULL);

  if(fWnd2 == NULL)
  {
   ShowMessage("Nie odnaleziono obiektu 2");
   return;
  }

  HWND fWnd3 = FindWindowEx(fWnd2, 0, L"#32770", NULL);

  if(fWnd3 == NULL)
  {
   ShowMessage("Nie odnaleziono obiektu 3");
   return;
  }

  HWND bWnd = FindWindowEx(fWnd3, 0, L"Button", L"Rozłącz");

  if(bWnd == NULL)
  {
   ShowMessage("Nie odnaleziono obiektu BUTTON");
   return;
  }

  SendMessage(bWnd, WM_LBUTTONDOWN, 0, 1);
  SendMessage(bWnd, WM_LBUTTONUP, 0, 1);

}
//---------------------------------------------------------------------------
void __fastcall TForm1::GetHotKey(TMessage &Msg)
{
 if(Msg.Msg == WM_HOTKEY && Msg.WParam == TRUE)
 {
  SendMessageToApp();
 }

 HotKey(Msg);
}


Kod działa, rozłącza internet, nawet gdy mam uruchomioną grę, bez minimalizowania tejże gry. Jak widzisz do przycisku Rozłącz:

KOD cpp:     UKRYJ  
  HWND bWnd = FindWindowEx(fWnd3, 0, L"Button", L"Rozłącz");


dobrałem się dopiero po pobraniu uchwytów do trzech innych kontrolek, a to dlatego, że przycisk ten nie znajduje się bezpośrednio na formularzu głównym, lecz na panelach, które się na tym formularzu znajdują, czyli przycisk jest czwarty w kolejności. Pokazuje to poniższy schemat:
sample.png


Program WinID nie powie Tobie jednak, jaka jest kolejność obiektów na formularzu, dlatego ja posłużyłem się programem Total Commander Ultimate Prime, a dokładniej jego wtyczką procesy, która to wtyczka pokazała mi takie informacje o procesie okna PLAY ONLINE:
sample2.png


Temat został już w zasadzie wyczerpany.
Nie masz wystarczających uprawnień, aby zobaczyć pliki załączone do tego postu.

Za ten post autor Cyfrowy Baron otrzymał podziękowanie od:
Pitek
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: Uchwyt do programu

Nowy postprzez Pitek » wtorek, 30 listopada 2010, 16:49

Bardzo dziękuję!!! Niezmiernie mi Pan pomógł! 8-) 8-) 8-)



Co do tych bzdur hehe to źle zinterpretowałem Pańską wypowiedź ale już rozumie o co chodziło. ;)

Co do wyczerpania tematu to raczej tak, już wszystko wiem ale może korzystając z tego iż mam jeszcze jedno pytanie szkoda tworzyć temat skoro jest ono o tematyce poruszanej tutaj. Mianowicie, czy da się jakoś sprawdzić z poziomu programu sterującego czy dane pole typu CheckBox jest zaznaczone czy też nie, bo sterować jego zaznaczeniem potrafię jednak nie wiem jaka jest jego wartość wyjściowa, a to zależy od tego czy mam ją zmieniać czy nie.

Jeszcze raz bardzo dziękuję!!!
Komputer służy do tego aby ułatwić Ci pracę, której bez niego w ogóle byś nie miał.
E.Murphy
http://piotrekprogramy.pl
Avatar użytkownika
Pitek
Kreacjusz
Kreacjusz
 
Posty: 290
Dołączył(a): środa, 14 października 2009, 14:53
Lokalizacja: Rybnik/Wrocław
Podziękował : 43
Otrzymał podziękowań: 5
System operacyjny: Win 7 Ultimate 64bit SP1 / Ubuntu 19.04 LTS 64bit
Kompilator: Embarcadero RAD Studio XE2
SKYPE: pitek3010
Gadu Gadu: 7060047
    Windows XPFirefox

Re: Uchwyt do programu

Nowy postprzez Cyfrowy Baron » wtorek, 30 listopada 2010, 20:49

Co do tego CheckBox to żaden z programów do pobierania informacji i procesach nie potrafił mi wskazać, czy CheckBox jest zaznaczony czy nie, więc nie wiem czy jest to możliwe i jak to zrobić.
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: Uchwyt do programu

Nowy postprzez MisticFrezer » środa, 1 grudnia 2010, 19:42

Nie wiem czy to pomoże, ale w WinApi sprawdzamy zaznaczenie CheckBoxa tak:

Kod: Zaznacz cały
iCheck=(int) SendMessage(hButtona, BM_GETCHECK, 0, 0);

lub
Kod: Zaznacz cały
iCheck = IsDlgButtonChecked(hRodzica, IDButtona);


Zmienna iCheck będzie miała wartość 0 dla odznaczonego checkboxa lub radiobuttonu, wartość 1 dla zaznaczonego i wartość 2 dla "pół zaznaczenia" trójstopniowych button'ów.

Za ten post autor MisticFrezer otrzymał podziękowanie od:
Pitek
Avatar użytkownika
MisticFrezer
Bladawiec
Bladawiec
 
Posty: 23
Dołączył(a): wtorek, 23 lutego 2010, 23:57
Lokalizacja: Wrocław
Podziękował : 1
Otrzymał podziękowań: 4
System operacyjny: Windows XP Pro SP3, Windows 7 Pro
Kompilator: BCB6, RAD Studio 2010, VS 2010
Gadu Gadu: 0
    Windows 7Opera

Następna strona

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 17 gości