Jak zrobić, aby w obiekcie np. TPanel otworzyć zewnętrzny program np. notatnik?

- Rejestracja:około 22 lata
- Ostatnio:ponad 10 lat
A może po prostu zmień rodzica :)
Zadeklaruj zmienną globalną
var
NotepadHandle: HWND;
Potem gdzieś w kodzie:
NotepadHandle := FindWindow('Notepad', nil);
if NotepadHandle > 0 then
Windows.SetParent(NotepadHandle, Panel.Handle);
Potem w OnClose formy przywróć rodzica:
if NotepadHandle > 0 then
Windows.SetParent(NotepadHandle, HWND_DESKTOP);
A może po prostu zmień rodzica :)
Zadeklaruj zmienną globalną
var
NotepadHandle: HWND;
Potem gdzieś w kodzie:
NotepadHandle := FindWindow('Notepad', nil);
if NotepadHandle > 0 then
Windows.SetParent(NotepadHandle, Panel.Handle);
Potem w OnClose formy przywróć rodzica:
if NotepadHandle > 0 then
Windows.SetParent(NotepadHandle, HWND_DESKTOP);
W zasadzie o to chodziło (wielkie dzięki [hurra] ), ale pojawił się nowy problem związany z funckją FindWindow. Skąd ja mam wiedzieć jak się nazywa okno jakiejś aplikacji? W notatniku wystarczyło wpisać 'Notepad' i po sprawie ale jak chce wczytać inny program (dowolny, przypadkowy) to co wtedy?
- Rejestracja:prawie 21 lat
- Ostatnio:ponad 18 lat
Jak sam tworzysz proces createProcessem, to w result masz uchwyt
z tym createprocess coś mi nie idzie, przeanalizowałem nawet jakiś kod w faq (http://4programmers.net/view_faq.php?id=464). Aplikacja się nawet wczytuje, ale jak próbuje wczytać do panelu program za pomocą uchwytu hProcessHandle to nic się nie dzieje :-(

- Rejestracja:ponad 22 lata
- Ostatnio:5 miesięcy
- Lokalizacja:Monachium
- Postów:848
Jak sam tworzysz proces createProcessem, to w result masz uchwyt
Juz 2 osoba mi o tym pisze. Poszukaj, tu obok jest topic o pobieraniu uchwytu uruchamianego programu, zobaczysz jakie mam problemy, moze znasz rozwiazanie.
Co do autora tego ropicu, na mojej stronie w dziale cracking narzedzia jest prosty programik - hackeye, on pokazuje nazwy programow i ich klasy.
- Rejestracja:prawie 21 lat
- Ostatnio:ponad 18 lat
Jak sam tworzysz proces createProcessem, to w result masz uchwyt
Juz 2 osoba mi o tym pisze. Poszukaj, tu obok jest topic o pobieraniu uchwytu uruchamianego programu, zobaczysz jakie mam problemy, moze znasz rozwiazanie.
Co do autora tego ropicu, na mojej stronie w dziale cracking narzedzia jest prosty programik - hackeye, on pokazuje nazwy programow i ich klasy.
programik bardzo przydatny, rozwiązuje z pewnością częśc moich problemów z uchwytami. Wielkie dzięki. :-)

- Rejestracja:około 22 lata
- Ostatnio:ponad 10 lat
No, dobrze. Kontynuując temat programu w programie to wszystko jest git ale wnerwia mnie jeszcze jeden mały element, a mianowicie pasek wczytywanego programu (ten z przyciskami minimalizuj, zamknij). Czy nie można by było go usunąć?
// pozbycie się belki tytułowej
SetWindowLong(NotepadHandle, GWL_STYLE, GetWindowLong(NotepadHandle, GWL_STYLE) and not WS_CAPTION);
// odświerzenie, żeby zmiany były widoczne
SetWindowPos(NotepadHandle, HWND_TOP, 0, 0, 0, 0, SWP_NOSIZE or SWP_NOMOVE);
Żeby potem przywrócić normalny wygląd zadeklaruj dodatkową zmienna typu Integer, do ktorej przypiszesz za pomocą GetWindowLong oryginalny styl, a potem go przywrócisz.
- Rejestracja:prawie 21 lat
- Ostatnio:ponad 18 lat
Czy możliwe jest sterowanie wczytanym program? Chodzi mi o parametry WParam i LParam. Skąd je zdobyć i jak z nich korzystać (zarówno wysyłanie komunikatów, jak i odbieranie).
P.S. Parametry do WinAmp-a mnie nie interesują bo są opisane w artach. Chodzi mi bardziej o zdobycie parametrów do dowolnego programu (np. Notatnik, Paint, Gadu-Gadu, foobar2000).
Witajcie
Chciałbym przed wami postawić taki problem, pisze w tym wątku bo zahaczają o siebie. Mam kilka aplikacji, jedna ma być aplikacją bazową która otwiera pozostałe jako aplikacje MDIChild. Te pozostałe aplikacje nie mogą być dll'kami do których przekazuje 'application'. Ktoś z was wie jak to zrobić?
Kombinowałem z tym co już pisaliście w tym temacie ale coś mi nie idzie, próbuje wywołać aplikacje tak:
var
app : HWND;
si: TStartupInfo;
pi: TProcessInformation;
begin
createprocess('prog/prog1.exe',nil,nil,nil,false,0,nil,nil,si,pi);
app := FindWindow('prog1', nil);
if app > 0 then
Windows.SetParent(app, self.Handle);
//aplikacja wywołująca jest typu fsMDIForm a okno główne aplikacji wywoływanej MDIChild
Problem jest taki że aplikacja w ogóle się nie otwiera nie mówiąc o otwarciu się wewnątrz drugiej.
Z góry dziękuje.