Skocz do zawartości

Snake

Użytkownicy
  • Postów

    1 445
  • Dołączył

  • Ostatnia wizyta

Odpowiedzi opublikowane przez Snake

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

  2. Są takie eventy na formie jak OnKeyPress / OnKeyDown / OnKeyUp, a w nich zmienna Key przechowuje wartość przyciśniętego klawisza. np:

    GML
    procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;

    Shift: TShiftState);

    begin

    if key = VK_LEFT then

    showmessage( 'blah' );

    end;

    Chociaż... to kijowy sposób.

  3. czy to coś u mnie jest nie tak, czy program Snake'a zamienia ikonki ?

    Yup, bo gry stworzone w GM6 są od razu konwertowane na GM6Vista przez Game Protectora. Czyli zasoby gry są przenoszone do nowszego pliku wykonywalnego Game Makera, kompatybilnego z Win Vista ( który ma standardową ikonę ). A zmiany ikony mi się nie chciało już robić ;P

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

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

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

×
×
  • Dodaj nową pozycję...