CYFROWY BARON • PROGRAMOWANIE • Zobacz wątek - HWND, processid lub handle do siebie samego

HWND, processid lub handle do siebie samego

dział ogólny

HWND, processid lub handle do siebie samego

Nowy postprzez bolek » poniedziałek, 30 sierpnia 2010, 14:15

Witam,

poszukuję jakiejś funkcji która mi pozwoli pobrać HWND albo process ID albo HANDLE do siebie samego, tak abym w programowanie potem mógł sam siebie otworzyć przez OpenProcess i PROCESS_ALL_ACCESS (w każdym wypadku czy to z process id czy z HWND dojdę do HANDLE programu).

Oczywiście mogę i zrobiłem już w stylu enumwindows i sprawdzanie nazwy klasy okna, ale jak już takich programów np. 5 odpalonych to nie potrzebnie będe w nich grzebać jak tylko potrzebuje siebie samego.
Avatar użytkownika
bolek
Bladawiec
Bladawiec
 
Posty: 2
Dołączył(a): wtorek, 20 lipca 2010, 13:30
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: Windows 7 x64
Kompilator: Dev C++, GCC, Borland C++ Builder
Gadu Gadu: 0
    Windows 7Opera

Re: HWND, processid lub handle do siebie samego

Nowy postprzez polymorphism » poniedziałek, 30 sierpnia 2010, 14:17

KOD cpp:     UKRYJ  
HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS,TRUE,GetCurrentProcessId());
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: HWND, processid lub handle do siebie samego

Nowy postprzez Cyfrowy Baron » poniedziałek, 30 sierpnia 2010, 14:34

Więcej na ten temat w serwisie Cyfrowy Baron dział porady -> API:

  • Sprawdzanie ile pamięci zużywa nasz program.
  • Sprawdzanie i zmiana priorytetu aplikacji.
  • Sprawdzanie zużycia pamięci przez procesy uruchomione w systemie.
  • Wyliczanie aktywnych procesów w systemie.
  • Zamykanie procesów.

Jak również na tym forum w wątku: http://programowanie.cal.pl/forum/viewtopic.php?f=2&t=813&p=5035&hilit=CloseProcess#p5035

W przypadku Windows 7 mogło się jednak coś zmienić.



Można też tak:

KOD cpp:     UKRYJ  
HWND hWnd = FindWindow(Application->MainForm->ClassName().t_str(),  Application->MainForm->Caption.t_str());


Sposób podany przez polymorphism jest jednak pewniejszy, gdyż identyfikuje proces w oparciu o jego PID i pobiera uchwyt do aplikacji (procesu), podczas gdy funkcja FindWindow pobiera uchwyt do okna w oparciu o nazwę jego klasy i nazwę okna, może się przydać w sytuacji gdy potrzebny jest uchwyt nie tyle do procesu ile do konkretnego okna.
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


  • 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 4 gości

cron