Skocz do zawartości

Rekomendowane odpowiedzi

Opublikowano

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?

Opublikowano

Do tego bys usial zrobic dlla, ktory wyszuka proces, podlaczy sie pod niego, nastepnie przejmie kontrole nad nim.

Opublikowano

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.

Opublikowano

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

Opublikowano
@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

Opublikowano

@Kofel: Yup.

@Moldis: Mi chodziło o to, że nie możesz nie znać Object Pascala, znając "Delphi Language". ;P

 

damn, net jamming...

Opublikowano

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 ; /

Opublikowano

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
Opublikowano

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.

Opublikowano

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 :)

Opublikowano

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

Opublikowano

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

Opublikowano

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

Opublikowano

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

Opublikowano

Poprzednią spakowałem UPX-em, a tą już dałem "czystą" :) Widocznie GM ma problemy ze skompresowanymi bibliotekami ;P

Opublikowano

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

Opublikowano

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

Opublikowano

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

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ę
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...