Moldis Opublikowano 12 Maja 2008 Opublikowano 12 Maja 2008 Czy jest jakiś sposób żeby z gry w gm-ie sprawdzić czy proces np. gra.exe jest teraz włączony? czy tam proces explorer.exe, i jakoś na niego oddziaływać, np. go wyłączyć albo zmienić priorytet?
PsichiX Opublikowano 12 Maja 2008 Opublikowano 12 Maja 2008 Do tego bys usial zrobic dlla, ktory wyszuka proces, podlaczy sie pod niego, nastepnie przejmie kontrole nad nim.
Moldis Opublikowano 12 Maja 2008 Autor Opublikowano 12 Maja 2008 ; / Nie wiesz może czy ktoś już zrobił takie biblioteki ?
Snake Opublikowano 12 Maja 2008 Opublikowano 12 Maja 2008 Napisałem Ci bibliotekę odczytującą listę procesów - dzięki temu będziesz mógł sprawdzić po nazwie procesu czy jest uruchomiony :P https://gmclan.org/up541_4_proclist.html A proces zamykasz tak: GML execute_program( 'taskkill', '/F /IM nazwaprocesu.exe', 0 ); ;D EDIT: Dobra tam, masz kod źródłowy ( obj pascal ), jak umiesz w nim programować to sobie rozszerzysz możliwości tej biblioteki: :) library ProcList; uses Windows, TlHelp32; var Process : TProcessEntry32; ProcHandle : THandle; function ProcessGetFirst() : PChar; stdcall; begin if ( ProcHandle > 0 ) then CloseHandle( ProcHandle ); ProcHandle := CreateToolHelp32SnapShot( TH32CS_SNAPALL, 0 ); Process.dwSize := SizeOf( Process ); if Integer( Process32First( ProcHandle, Process ) ) <> 0 then Result := Process.szExeFile else Result := ''; end; function ProcessGetNext() : PChar; stdcall; begin if Integer( Process32Next( ProcHandle, Process ) ) <> 0 then Result := Process.szExeFile else begin Result := ''; CloseHandle( ProcHandle ); end; end; exports ProcessGetFirst, ProcessGetNext; begin end.
Moldis Opublikowano 12 Maja 2008 Autor Opublikowano 12 Maja 2008 Aww.. Jesteś moim bogiem od crackingu i bibliotek ;D @edit mhmm.. co prawda OP nie znam ale znam co nieco delphi więc rozumiem mniej więcej strukturę tego kodu ;D
Snake Opublikowano 12 Maja 2008 Opublikowano 12 Maja 2008 @edit mhmm.. co prawda OP nie znam ale znam co nieco delphi więc rozumiem mniej więcej strukturę tego kodu ;D Object Pascal – obiektowy język programowania, obiektowe rozszerzenie języka Pascal, użyty jako język programowania w środowisku programistycznym Borland Delphi (...) :P
Moldis Opublikowano 12 Maja 2008 Autor Opublikowano 12 Maja 2008 Aha.. a ja zawsze żyłem w przekonaniu iż delphi to swoistego rodzaju język zbudowany na op.. >,,>
Kofel Opublikowano 12 Maja 2008 Opublikowano 12 Maja 2008 Może się nie znam na O Pascalu, ale czy to jest potrzebne: Result := ''; Co? xd
Snake Opublikowano 12 Maja 2008 Opublikowano 12 Maja 2008 @Kofel: Yup. @Moldis: Mi chodziło o to, że nie możesz nie znać Object Pascala, znając "Delphi Language". ;P damn, net jamming...
Moldis Opublikowano 12 Maja 2008 Autor Opublikowano 12 Maja 2008 Tak przeglądam właśnie ten dołączony plik do gm.. i na jakiej zasadzie to odświeżanie działa ? ; / instance_create( 0, 0, 0 ); instance_destroy(); @edit A i powiedz jeszcze bo nie mam zielonego pojęcia jaką funkcją można wyszukać ciąg znaków w danej zmiennej ; /
Snake Opublikowano 12 Maja 2008 Opublikowano 12 Maja 2008 Nie chciało mi się pisać to sobie tak uprościłem :) Tworzy object0 a siebie usuwa... czyli taki restart ;D Równie dobrze może być to samo co w create czy też: GML lista = get_process_first() + '#'; do lista += get_process_next() + '#'; until ( string_copy( lista, string_length( lista ) - 1, 2 ) = '##' ) Jaką funkcją wyszukać ciąg znaków ? GML if string_pos( 'explorer.exe', lista ) > 0 // pozycja pierwszego 'explorer.exe' w zmiennej // jesli jest w liscie - kod if string_count( 'explorer.exe', lista ) > 0 // liczba 'explorer.exe' w zmiennej // jesli jest w liscie - kod Możesz też sprawdzać czy dany proces jest uruchomiony na tablicach, porównując ciągi znaków... ;p
Filar Społeczności Ranmus Opublikowano 12 Maja 2008 Filar Społeczności Opublikowano 12 Maja 2008 Oj, Object Pascal to stara nazwa Delphi i tyle. Borland po pewnym czasie zmienił nazwę na tą drugą i tyle. Delphi to środowisko jak i sam język. W polskiej wikipedii są głupoty popisane na ten temat.
Snake Opublikowano 12 Maja 2008 Opublikowano 12 Maja 2008 Tak pokręcili z tym Delphi, że sam już nie byłem pewien czy Delphi można nazywać językiem programowania czy nie... thx for info :)
Moldis Opublikowano 13 Maja 2008 Autor Opublikowano 13 Maja 2008 Eee... Nie mam zielonego pojęcia.. ale czasami po sprawdzeniu czy na liście znajduje się jakiś proces program się wykracza, a czasami nawet tak bez powodu.. ? Wie ktoś dlaczego może tak się dziać? Może to problem biblioteki czy coś?
Moldis Opublikowano 13 Maja 2008 Autor Opublikowano 13 Maja 2008 Tzn. nagle się wyłącza.. @Edit aww.. ale grzmi, prawdopodobnie nie będę miał teraz neta więc mogę prędko nie odpisać jak coś..
Snake Opublikowano 13 Maja 2008 Opublikowano 13 Maja 2008 Przecież sprawdzanie, czy proces jest na liście nie zależy od DLL-a bo się z niego wtedy nie korzysta, to już się robi w GM przeszukując zmienną czy tablicę... po np. wykonaniu takiego skryptu twoja gra/program ci się wyłącza ?: GML if string_pos( 'explorer.exe', lista ) > 0 execute_program( 'taskkill', '/F /IM explorer.exe', 0 ); Bo powinien explorer ^^ a może dałeś: execute_program( 'taskkill', '/F /IM mojagra.exe', 0 ); ;D
Moldis Opublikowano 13 Maja 2008 Autor Opublikowano 13 Maja 2008 Wyłączył się exploler.. a za jakiś czas program.. może wkleje tu linijki kodu, póki mam net.. CREATE GML proclist_init(); // definiowanie proces_dz = ''; mozna_odswierzyc = true; i = 0; lista = get_process_first() + '#'; // pobierz pierwszy process ( resetuje liste ) / dzialanie podobne do file_find_first while ( true ) // niskonczona petla { lista += get_process_next() + '#'; // pobierz nastepny process z listy /* jesli dojdzie do konca listy przerwij petle */ if ( string_copy( lista, string_length( lista ) - 2, 2 ) = '##' ) break; } alarm[0] = room_speed * 0.25 // odświerzanie co 1/4 sekundy STEP GML //===== ODŚWIERZANIE LISTY =====// if mozna_odswierzyc = true { lista = get_process_first() + '#'; do lista += get_process_next() + '#'; until ( string_copy( lista, string_length( lista ) - 1, 2 ) = '##' ) mozna_odswierzyc = true; } //======== PPRZEWIJANIE ========// if keyboard_check(vk_up) { if view_yview[1] < 30 { view_yview[1] += 10; } } else if keyboard_check(vk_down) { if view_yview[1] > -480 { view_yview[1] -= 10; } } //== PRZYPISANIE + SPRAWDZANIE DOSTĘPNOŚCI ==// if keyboard_check_pressed(vk_enter) { proces_dz = get_string('Podaj nazwę porcesu:', proces_dz); if proces_dz != '' { if string_pos( proces_dz, lista ) > 0 { show_message('Proces "' +string(proces_dz) +'" jest włączony.'); } else { show_message('Proces "' +string(proces_dz) +'" nie jest włączony.'); } } else { show_message('Proszę podać jaki proces ma zostać sprawdzony.'); } } //===== ZAMYKANIE PROCESU ====// if keyboard_check_pressed(vk_backspace) { execute_program( 'taskkill', '/F /IM ' +string(proces_dz), 0 ); } To są te najważniejsze, oprócz tego mam alarm który zwraca true zmiennej proces_dz i draw do rysowania listy..
Snake Opublikowano 13 Maja 2008 Opublikowano 13 Maja 2008 U mnie wszystko w porządku... a spróbuj jeszcze raz z tą biblioteką: https://gmclan.org/up541_4_Proc.html
Moldis Opublikowano 13 Maja 2008 Autor Opublikowano 13 Maja 2008 Ee.. z tą już się nic nie dzieje.. przynajmniej na razie XD Co w niej zmieniłeś?
Snake Opublikowano 13 Maja 2008 Opublikowano 13 Maja 2008 Poprzednią spakowałem UPX-em, a tą już dałem "czystą" :) Widocznie GM ma problemy ze skompresowanymi bibliotekami ;P
Moldis Opublikowano 13 Maja 2008 Autor Opublikowano 13 Maja 2008 Mhm.. dzięki! A jest jakaś funkcja lub program w windzie którym można zmienić priorytet procesu? Czy trzeba pisać bibliotekę? A i wskaźnik procentowy zużycia cpu oraz ram-u ; D
Snake Opublikowano 13 Maja 2008 Opublikowano 13 Maja 2008 Heh, nie rób takich rzeczy w GM-ie, bo po co ;D Tu znajdziesz programik, który kontroluje z linii poleceń procesy: http://www.beyondlogic.org/solutions/proce...processutil.htm Poczytaj na tej stronie jak go obsługiwać, potem dodaj go do includes w GM czy wsadź do folderu z grą ( waży 25kb ) i nim się posługuj z GM-a :P Co do zużycia RAM-u i CPU... dopisz sobie do DLL-a ;D
Moldis Opublikowano 13 Maja 2008 Autor Opublikowano 13 Maja 2008 Mhm.. dzięki! A takie programy etc robie ponieważ lubię mieć później wszystko pod ręką.. gdybym np. potrzebował czegoś to już będę miał wszystko bez szukania po forach etc..;D A na dodatek zawsze troszkę zapamiętam z tego co robie i potem będę miał z tym mniejsze kłopoty ;D
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ę