logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[Delphi] Jak otworzyć inny program z poziomu aplikacji?

Necik 23 Maj 2004 16:02 4289 7
REKLAMA
  • #1 655585
    Necik
    Poziom 15  
    Posty: 216
    Ocena: 3
    Tak jak w temacie: Jaka procedura umożliwia otwarcie innego programu, z pozycji tego który ja piszę. Wiem jak otworzyć przeglądarkę internetową, ale z otwieraniem programów mam problem. Proszę o wskazówki.

    Zamykam. - arnoldziq
  • REKLAMA
  • #2 655990
    scotch
    Poziom 28  
    Posty: 986
    Pomógł: 78
    Ocena: 148
    ShellExecute(Handle,'open','JakisProgram.exe',PChar(' Obcje'), nil,SW_SHOWNORMAL);
    Obcje - obcje z jakimi uruchamiamy program np "-r" , "-r -s" itp
    W_HIDE
    oznacza ukrycie okna a tym samym aktywację innego,
    SW_MAXIMIZE
    okno ma być zmaksymalizowane,
    SW_MINIMIZE
    okno ma być zminimalizowane a uaktywnione ma być kolejne okno w porządku ZOrder,
    SW_RESTORE
    okno ma być otwarte i aktywowane w ostatniej wielkości i położeniu
    SW_SHOW
    okno ma być otwarte i aktywowane w bieżącym położeniu,
    SW_SHOWDEFAULT
    okno ma być otwarte z zachowaniem domyślnych ustawień,
    SW_SHOWMAXIMIZED
    okno ma być otwarte i aktywowane w postaci zmaksymalizowanej,
    SW_SHOWMINIMIZED
    okno ma być otwarte i aktywowane w postaci zminimalizowanej,
    SW_SHOWMINNOACTIVE
    okno ma być otwarte w postaci zminimalizowanej, okno aktywne ma pozostać aktywne,
    SW_SHOWNA
    okno ma być otwarte w bieżącej wielkości i położeniu, okno aktywne ma pozostać aktywne
    SW_SHOWNOACTIVATE
    okno ma być otwarte w domyślnym położeniu, okno aktywne ma pozostać aktywne,
    SW_SHOWNORMAL
    okno ma być otwarte i aktywowane w domyślnym położeniu.
  • REKLAMA
  • #3 656000
    scotch
    Poziom 28  
    Posty: 986
    Pomógł: 78
    Ocena: 148
    Np. w ten sposób za pomocą funkcji WinApi
    ShellExecute(Handle,'open','C:\JakiśProgram.exe',PChar('Obje '), nil,uruchom);

    Obcje-obcje uruchomienia programu np < -r -t albo /s > lub puste

    uruchom:
    SW_HIDE
    oznacza ukrycie okna a tym samym aktywację innego,
    SW_MAXIMIZE
    okno ma być zmaksymalizowane,
    SW_MINIMIZE
    okno ma być zminimalizowane a uaktywnione ma być kolejne okno w porządku ZOrder,
    SW_RESTORE
    okno ma być otwarte i aktywowane w ostatniej wielkości i położeniu,
    SW_SHOW
    okno ma być otwarte i aktywowane w bieżącym położeniu,
    SW_SHOWDEFAULT
    okno ma być otwarte z zachowaniem domyślnych ustawień,
    SW_SHOWMAXIMIZED
    okno ma być otwarte i aktywowane w postaci zmaksymalizowanej,
    SW_SHOWMINIMIZED
    okno ma być otwarte i aktywowane w postaci zminimalizowanej,
    SW_SHOWMINNOACTIVE
    okno ma być otwarte w postaci zminimalizowanej, okno aktywne ma pozostać aktywne,
    SW_SHOWNA
    okno ma być otwarte w bieżącej wielkości i położeniu, okno aktywne ma pozostać aktywne,
    SW_SHOWNOACTIVATE
    okno ma być otwarte w domyślnym położeniu, okno aktywne ma pozostać aktywne,
    SW_SHOWNORMAL
    okno ma być otwarte i aktywowane w domyślnym położeniu.
  • #4 656653
    Necik
    Poziom 15  
    Posty: 216
    Ocena: 3
    Próbowałem tak jak pisałeś, ale wyskakuje błąd "undeclared identifier:'shellexecute'". Kiedyś próbowałem przez funkcję OpenFile, ale też wyskakiwał jakiś błąd.
  • REKLAMA
  • #5 656732
    faber
    Poziom 24  
    Posty: 701
    Pomógł: 49
    Ocena: 36
    w sekcji uses dopisz ShellAPI
  • REKLAMA
  • #6 656754
    krzychoo_soft
    Poziom 17  
    Posty: 233
    Pomógł: 16
    Ocena: 13
    Muszę przyznać że ShellExecute(); to chyba najlepszy sposób odpalania programów i nietylko. Możesz nim jeszcze otwierać okno do wysyłania maili (domyślny klient), odtwarzać muzykę w tle programu a nawet odpalać funkcje z bibliotek dynamicznych (przydatne w trojanach).
  • #7 656997
    Necik
    Poziom 15  
    Posty: 216
    Ocena: 3
    Teraz działa. Gdyby jednak ktoś mógł mi wyjaśnić co oznaczają operatory w nawiasie, np. handle albo za co odpowiedzialne jest PChar(), to bardzo bym prosił, bo na razie to tylko bezmyślnie wklepałem kod.
  • #8 657029
    faber
    Poziom 24  
    Posty: 701
    Pomógł: 49
    Ocena: 36
    No PChart to chyba powinienies wiedziec :) standardowa funkcja rzutujaca delphi, a handle to uchwyt okna twojego programu.
    Generajnie to teraz wystarczy juz google :)

Podsumowanie tematu

✨ W dyskusji omówiono sposób uruchamiania innych programów z poziomu aplikacji napisanej w Delphi. Zalecanym rozwiązaniem jest użycie funkcji WinAPI ShellExecute, która umożliwia otwarcie pliku wykonywalnego z określonymi parametrami i kontrolą sposobu wyświetlania okna (np. SW_SHOWNORMAL, SW_HIDE, SW_MAXIMIZE). Aby uniknąć błędu "undeclared identifier: ShellExecute", należy dołączyć do sekcji uses moduł ShellAPI. Funkcja ShellExecute przyjmuje m.in. uchwyt okna (Handle) oraz wskaźnik na łańcuch znaków (PChar), który służy do przekazywania parametrów uruchamianego programu. ShellExecute jest wszechstronnym narzędziem pozwalającym nie tylko na uruchamianie programów, ale także otwieranie domyślnego klienta poczty, odtwarzanie muzyki czy wywoływanie funkcji z bibliotek dynamicznych. Wyjaśniono również znaczenie parametrów funkcji oraz konieczność zrozumienia typów danych takich jak Handle i PChar w Delphi.
Wygenerowane przez model językowy.
REKLAMA