Mam takie pytanie: Jak programowo wykryć jakie katalogi są w danej chwili otwarte? Chodzi mi o coś takiego jak przy procesach. Żebym mógł wykryć jaki katalog jest otwarty i np. programowo go zamknąć. Jak windows traktuje otwarty katalog?
jesli myslisz o oknach explorera, to chyba nie trudno byloby je zamykac znajac uchwyt, a poznac mozna znajac tytul belki. Co innego jesli myslisz o kazdym otwarciu folderu. Np. Total Commanderem.
Chodzi mi o okna explorera. Dajmy na to, że mam katalog "c:\delphi" i chciałbym wykryć jego otwarcie. A następnie zamknąć. Jak to zrobić?
Chodzi mi o okna explorera. Dajmy na to, że mam katalog "c:\delphi" i chciałbym wykryć jego otwarcie. A następnie zamknąć. Jak to zrobić?
Jesli masz w opcjach ustawione pokazywanie sciezki na belce to szukasz ( kod byl w poscie "jak pobrac uchwyt otwieranego programu" ) okna eksplorera z ta sciezka i zamykasz. Jesli nie to sprawdzasz wszystkie okna explorera, poznajesz ich handle, dzieki ktorym mozesz poznac handle pola adres. Gdy masz to to juz nie trudno jest pobrac tekst z tego pola. To wszystko juz bylo omawiane na forum, poszukaj. Szkoda, ze opcja szukaj nie dziala najlepiej...
Połowa już za mną. Już jestem w stanie wykryć otwarcie danego katalogu. (dziękuję) A teraz mam drugie pytanie: jak to okno zamknąć? Moja procedurka zamykająca procesy nie działa. Mógłbyś pomóc?
napisz tą procedurke...
Uchwyt:=OpenProcess(PROCESS_TERMINATE,bool(0),proces);
TerminateProcess(Uchwyt,0);
CloseHandle(Uchwyt);
Pozwoliłem sobie wcześniej skorzystać z Twojej funkcji wyszukującej handle po captionie (świetna) . Następnie otrzymaną wartość w powyższej procedurze daję w miejsce "proces".
ps gdy operuje na procesach to ta wartość jest ujemna a to co daje Twoja procedura jest dodatnie. Czy to w ogóle są te same wartości?
znaczy chodziło mi o funkcję zamieszczoną przez Darck'a.
Uchwyt:=OpenProcess(PROCESS_TERMINATE,bool(0),proces);
TerminateProcess(Uchwyt,0);
CloseHandle(Uchwyt);
Pozwoliłem sobie wcześniej skorzystać z Twojej funkcji wyszukującej handle po captionie (świetna) . Następnie otrzymaną wartość w powyższej procedurze daję w miejsce "proces".
ps gdy operuje na procesach to ta wartość jest ujemna a to co daje Twoja procedura jest dodatnie. Czy to w ogóle są te same wartości?
Srobuj tych procedur:
PostMessage(uchwyt, WM_QUIT,0,0);
postmessage(uchwyt,WM_CLOSE,0,0)
A uchwyty sa rozne, poniewaz swoja proceduro przejmujesz uvhwyt procesu, a nie okna. Zamykajac proces zamkniejsz wszystkie okna explorera, a chyba tego nie chcesz.
Działa: postmessage(proces,WM_CLOSE,0,0).
Tyle, że tam jest "proces" a nie "uchwyt":).
Dzięki. Jestem zobowiązany.
Pozdrawiam Hag