Katalogi, jak wykryć ich otwarcie?

0

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?

0

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.

0

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ć?

0

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

0

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?

0

napisz tą procedurke...

0
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.

0
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.

0

Działa: postmessage(proces,WM_CLOSE,0,0).
Tyle, że tam jest "proces" a nie "uchwyt":).
Dzięki. Jestem zobowiązany.

Pozdrawiam Hag

1 użytkowników online, w tym zalogowanych: 0, gości: 1