Easeful Opublikowano 9 Stycznia 2010 Udostępnij Opublikowano 9 Stycznia 2010 GML arg="666"; //id procesu w systemie arg=string_digits(arg); //usuniecie wszystkich liter i znakow z id (opcjonalnie) arg=real(arg); //zamiana ze string na real arg=process_open(arg); //zamiana na id Xtend.dll'a (otwieranie procesu) pnm=process_get_name(arg); //pobieranie nazwy procesu process_close(arg); //zamykanie procesu show_message('Handle: '+string(arg)+' Name: '+string(pnm)); Show_msg pokazuje mi: "Handle: <jakaśliczba> Name: " - nie pokazuje żadnej nazwy. Łaj? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Marek.S Opublikowano 9 Stycznia 2010 Udostępnij Opublikowano 9 Stycznia 2010 może id masz źle wpisane. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Easeful Opublikowano 9 Stycznia 2010 Autor Udostępnij Opublikowano 9 Stycznia 2010 id na pewno jest dobrze Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Marek.S Opublikowano 9 Stycznia 2010 Udostępnij Opublikowano 9 Stycznia 2010 spróbuj: if ( process_exists( 66 )) show_message( 'proces istnije w systemie' ) jeśli nie pokażę się wiadomośc, znaczy że masz złe id. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 9 Stycznia 2010 Udostępnij Opublikowano 9 Stycznia 2010 arg="666" [...] arg=process_open(arg); o zgrozo :0 a to ta funkcja nie zwraca czasem liczby a nie string? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Easeful Opublikowano 9 Stycznia 2010 Autor Udostępnij Opublikowano 9 Stycznia 2010 tak, ale pod "[...]" ukryty jest kod, który ze stringa na real zamienia e: @Marek.S: nie ma takiej funkcji ;/ samo process_open powinno zwracać false jeżeli proces nie istnieje, ale on zwraca id tego procesu czyli proces jest dobry, tylko czemu tej nazwy nie wyciąga? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 9 Stycznia 2010 Udostępnij Opublikowano 9 Stycznia 2010 nie rozumiesz. ogolem arg jest typu string, przypisujesz mu real gdzie juz powinien byc blad Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Easeful Opublikowano 9 Stycznia 2010 Autor Udostępnij Opublikowano 9 Stycznia 2010 @PsichiX: GML arg="666"; //id procesu w systemie arg=string_digits(arg); //usuniecie wszystkich liter i znakow z id (opcjonalnie) arg=real(arg); //zamiana ze string na real <--------------------------- [...] edit: hmm... dopiero jak sie "przyjrzałem" to zczaiłem ;s ale to chyba nic nie wnosi, bo nie ma żadnego błędu Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 9 Stycznia 2010 Udostępnij Opublikowano 9 Stycznia 2010 cholibka, Ty nadal nie rozumiesz :C arg="666" // arg jest stringiem! arg=real(arg); // przypisujesz real zmiennej typu string!!! Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Easeful Opublikowano 9 Stycznia 2010 Autor Udostępnij Opublikowano 9 Stycznia 2010 PsichiX no napisałem wczesniej w edicie ze juz zczaiłem. no to już działa, bo dałem drugą zmienną, tylko jest jakiś błąd z tym id ale to sie zaraz opanuje edit: GML arg="666"; arg=string_digits(arg); ar=real(arg); ar=process_open(ar); pnm=process_get_name(ar); process_close(ar); show_message('Handle: '+string(ar)+' Name: '+string(pnm)); to samo ;/ (brak Name) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 9 Stycznia 2010 Udostępnij Opublikowano 9 Stycznia 2010 a jestes pewny ze proces o id 666 istnieje? :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Easeful Opublikowano 9 Stycznia 2010 Autor Udostępnij Opublikowano 9 Stycznia 2010 tutaj to przykładowo 666 daję, a w programie wpisuję id jakiegoś procesu który istnieje Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 9 Stycznia 2010 Udostępnij Opublikowano 9 Stycznia 2010 a w Twoim programie to jak wyglada? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Easeful Opublikowano 9 Stycznia 2010 Autor Udostępnij Opublikowano 9 Stycznia 2010 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Marek.S Opublikowano 9 Stycznia 2010 Udostępnij Opublikowano 9 Stycznia 2010 upewnij się czy masz najnowszą wersję Xtend'a. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Easeful Opublikowano 9 Stycznia 2010 Autor Udostępnij Opublikowano 9 Stycznia 2010 2.0.0.0 a te podkategorie i wszystkie komentarze w skryptach mam po angielsku ;/ --- problem rozwiązany edit: bo użyłem process_terminate ;S edit2: loo jakie ty masz fajne tam funkcje weź mi podaj swoj xtend Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Marek.S Opublikowano 9 Stycznia 2010 Udostępnij Opublikowano 9 Stycznia 2010 haha, czyżby Snake w najnowszej wersji zapomniał o process_exists :D Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Easeful Opublikowano 9 Stycznia 2010 Autor Udostępnij Opublikowano 9 Stycznia 2010 ale to jest ciekawe troche, bo np jest ikonka dll'a jak każdego dll'a, tytuł Xtend.dll a na dole na szaro napisana wersja 1.2.0.0, a jak wejde w PPM>Właściwości>Cośtam: to mam wersja 2.0.0.0 producent Snake Dev czy cos itd.. i jeszcze pobieralem z snake.ovh.org czy jak to tam i było czarno na biało że pobieram 2.0.0.0 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Snake Opublikowano 10 Stycznia 2010 Udostępnij Opublikowano 10 Stycznia 2010 haha, czyżby Snake w najnowszej wersji zapomniał o process_exists :D Nie zapomniałem. Wystarczy pomyśleć: gdy funkcja process_find_id() (szukanie ID po nazwie) zwróci 0 to oznacza, że proces o danej nazwie nie istnieje; jak process_open() zwróci błąd, to znaczy, że proces o podanym identyfikatorze albo nie istnieje albo i tak nie masz uprawnień by go otwierać. ale to jest ciekawe troche, bo np jest ikonka dll'a jak każdego dll'a, tytuł Xtend.dll a na dole na szaro napisana wersja 1.2.0.0, a jak wejde w PPM>Właściwości>Cośtam: to mam wersja 2.0.0.0 producent Snake Dev czy cos itd.. i jeszcze pobieralem z snake.ovh.org czy jak to tam i było czarno na biało że pobieram 2.0.0.0 Pewnie zapomniałem zaktualizować wartość którejś zmiennej z VERSIONINFO. ;p A tą starszą wersję ze screenshota Marka.S nadal można znaleźć w pierwszym poście w temacie Xtenda. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Dawidds Opublikowano 10 Stycznia 2010 Udostępnij Opublikowano 10 Stycznia 2010 Problem rozwiązany, ale dodam na przyszłość, jakby ktoś nie wiedział: nie rozumiesz. ogolem arg jest typu string, przypisujesz mu real gdzie juz powinien byc bladW gmie tak można :) Możesz sobie zamieniać stringi na reale, reale na stringi, i..., i to tyle typów zmiennych ;d Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Snake Opublikowano 10 Stycznia 2010 Udostępnij Opublikowano 10 Stycznia 2010 Bezsens. Ciekawe czy to ficzer czy bug :F Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Easeful Opublikowano 10 Stycznia 2010 Autor Udostępnij Opublikowano 10 Stycznia 2010 Snake skoro tutaj jeszcze jesteś to mam pytanie: process_create(...) Jakie dać argumenty, żeby odpalić cmd.exe w osobnym oknie? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Snake Opublikowano 10 Stycznia 2010 Udostępnij Opublikowano 10 Stycznia 2010 Powinno być: hProcess = process_create( environment_get_variable( "COMSPEC" ), "", "", false ); Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Easeful Opublikowano 10 Stycznia 2010 Autor Udostępnij Opublikowano 10 Stycznia 2010 No, ale problem w tym że ja używam do mojego programu ConsoleDLL i jakoś to się tak dziwnie robi że cmd otwiera mi sie w mojej konsoli :S Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Snake Opublikowano 10 Stycznia 2010 Udostępnij Opublikowano 10 Stycznia 2010 Hm, no to może: hProcess = process_create( environment_get_variable( "COMSPEC" ), "/k start", "", false ); Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Easeful Opublikowano 10 Stycznia 2010 Autor Udostępnij Opublikowano 10 Stycznia 2010 no to już działa jak ma działać, ale zwraca inne ID.. wcześniej próbowałem też z execute_shell zamiast process_create, ale żeby zdobyć id tego co dałem w execute_shell to dawałem process_find_cośtam i po nazwie znajdywałem, ale jak były np 2 cmd.exe odpalone to dawało zawsze tego pierwszego id.. może masz jakiś pomysł jak odpalić cmd.exe w osobnym oknie i zdobyć jego id? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Kofel Opublikowano 10 Stycznia 2010 Udostępnij Opublikowano 10 Stycznia 2010 Bezsens. Ciekawe czy to ficzer czy bug :F w większości językach skryptowych tak jest :i Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Snake Opublikowano 10 Stycznia 2010 Udostępnij Opublikowano 10 Stycznia 2010 no to już działa jak ma działać, ale zwraca inne ID.. wcześniej próbowałem też z execute_shell zamiast process_create, ale żeby zdobyć id tego co dałem w execute_shell to dawałem process_find_cośtam i po nazwie znajdywałem, ale jak były np 2 cmd.exe odpalone to dawało zawsze tego pierwszego id.. może masz jakiś pomysł jak odpalić cmd.exe w osobnym oknie i zdobyć jego id? process_create zwraca uchwyt procesu, nie ID. Niestety niema ATM w Xtendzie funkcji, która pozyskałaby identyfikator procesu przez uchwyt. Masz 2 wyjścia. Pierwsze: pobierzesz listę procesów za pomocą process_enumerate_processes() i przechwycisz ID wszystkich procesów o nazwie "cmd.exe". Drugie: pobierasz GFFI: http://www.messy-mind.net/2009/gffi/ i z jego pomocą importujesz funkcję o nazwie GetProcessId z WinAPI. Tak to będzie wyglądało: GML (Create) gffi_init(); global.hKernel32 = gffi_dll_load( "kernel32.dll", gffi.STDCALL ); global.pGetProcessId = gffi_function_define( global.hKernel32, "GetProcessId", gffi.UINT32, gffi.UINT32 ); a potem gdzieś w kodzie: GML hProcess = process_create( environment_get_variable( "COMSPEC" ), "/k start", "", false ); processId = gffi_function_call( global.pGetProcessId, hProcess ); Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się