Witam.
Czy jest możliwość uruchomienia innego programu (mnie interesuje terminal putty) na formie (części formy) lub w panelu położonym na formie. Opisane ?zjawisko? ;) widziałem w kasie biletowej, na formie (górna część były przyciski zwykłe butony) a dolna połowa była zajęta właśnie przez terminal.
Proszę o podpowiedź jak to zrobić.
Wydaje mi się że to był jeden program... Tylko z podzielonym oknem. W obrębie jednej aplikacji jest także możliwe umieszczenie jednej formy "na drugiej" (np. JvEmbedded Forms z pakietu JVCL). A czy jest możliwe mieszanie form z różnych aplikacji? Podobno wszystko jest możliwe, ale ja o takim czymś nie słyszałem...
keinxor napisał(a)
Witam.
Opisane ?zjawisko? ;) widziałem w kasie biletowej, na formie
Abstrahujac...po co w kasie biletowej dostep via SSH?
lofix napisał(a)
keinxor napisał(a)
Witam.
Opisane ?zjawisko? ;) widziałem w kasie biletowej, na formieAbstrahujac...po co w kasie biletowej dostep via SSH?
Tego to nie wiem czy bylo ssh <ort>polonczenie </ort>czy zwykly telnet predzej to drugie ;)
A <ort>na pewno </ort>byl to putty bo widzialem na pasku programu i byl on wlasnie w formie "ze tak nazwe nadrzednej" cos ala mdi.
Zassam to jedi i obacze co tam je ;)
oczekuje dalszych sugestii
pozdro
Może SetParent() pomoże?
procedure TForm1.FormCreate(Sender: TObject);
var h:HWND;
begin
h := findwindow(nil,'Bez tytułu - Notatnik');
form1.Caption := inttostr(h);
windows.SetParent(h,form1.Handle)
end;
Wielkie dzieki temp99 !!!
Kodzik który przedstawiłeś działa :> teraz postaram sie go "doszlifować" do swoich potrzeb, jeszcze raz wielkie dzieki !!!
Pozdrawiam
Jeszcze zapytam, jak ustawić właściwość wsMaximized okna programu które "przechwycimy" lub tez jak je dopasować do rozmiaru panela, i jeszcze jak ukryć pasek tego programu ??
ShowWindow - Zmiana stanu okna.
SetWindowPos - Zmiana rozmiarów okna.
keinxor napisał(a)
Wielkie dzieki temp99 !!!
Nie, żebym się opominał, ale to ja rzuciłem SetParent() :> Tylko pewnie nie zwróciłeś uwagi, bo nie było gotowego kodu.
Masz racje brodny, jako pierwszy rzuciłeś hasło "SetParent", ale jako że ja jestem jeszcze tempawy [wstyd] nie potrafiłem tego wykorzystać.
Teraz wracam do tematu..
mam taki kodzik:
begin {uruchomienie terminala} shellexecute(Handle,'Open',PCHar(pr_scierzka_do_terminala),nil,nil,SW_SHOWMAXIMIZED);
sleep(100);
uchwyt_do_okna_terminala:=findwindow(nil,PCHar(pr_tytul_okna_terminala));
windows.SetParent(uchwyt_do_okna_terminala,form1.GroupBox2.Handle);
end;
Nie wiem czemu ale uruchomione okno w groupbox (czy panel bez znaczenia)
nie jest "MAXIMIZED"
Wiecie dlaczego ??
A jeszcze jedno czy funkcja shellexecute w pierwszym parametrze Handle zwraca uchwyt do uruchomionej przez nią aplikacji ??
keinxor napisał(a)
A jeszcze jedno czy funkcja shellexecute w pierwszym parametrze Handle zwraca uchwyt do uruchomionej przez nią aplikacji ??
Nie:
Win32 SDK napisał(a)
hwnd
Specifies a parent window. This window receives any message boxes that an application produces. For example, an application may report an error by producing a message box.
I zobacz sobie to SetWindowPos().
Dzikęki brodny za sugestie z SetWindowPos, wykombinowałem tak...
begin {uruchomienie terminala} shellexecute(Handle,'Open',PCHar(pr_scierzka_do_terminala),nil,nil,SW_SHOWMAXIMIZED);
sleep(100);
uchwyt_do_okna_terminala:=findwindow(nil,PCHar(pr_tytul_okna_terminala));
windows.SetParent(uchwyt_do_okna_terminala,form1.GroupBox2.Handle);
SetWindowPos(uchwyt_do_okna_terminala, HWND_TOP, 0, 0, GroupBox2.Width, GroupBox2.Height,SWP_SHOWWINDOW);
end;
Jest może funkcja co zwraca automatycznie uchwyt do okna aplikacji przez nią uruchamianej coś w stylu shellexecute, bo teraz na stałe mam w pliku ini parametr
pr_tytul_okna_terminala zeby pobrać uchwyt funkcją findwindow, ale że tak powiem mało praktyczne to jest...
Słucham propozycji
pozdro