Form içinde uyguluma çalıştırmak
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Form içinde uyguluma çalıştırmak
Merhabalar,
ben form'um içinde bir uygulama çalıştırmak istiyorum, yani benim ana formumun içinde atıyorum xxx.exe çalısıcak böyle birşeyi nasıl gerçekleştirebilirim ? biryerde gördüm nasıl yapacağımı anlayamadım..
şimdiden çok teşekkürler. isteğimi tam anlatamamış olabilirim anlayamayan dostlarım söylerse birazdaha açıklayıcı şekilde anlatmayı deneyebilirim...
ben form'um içinde bir uygulama çalıştırmak istiyorum, yani benim ana formumun içinde atıyorum xxx.exe çalısıcak böyle birşeyi nasıl gerçekleştirebilirim ? biryerde gördüm nasıl yapacağımı anlayamadım..
şimdiden çok teşekkürler. isteğimi tam anlatamamış olabilirim anlayamayan dostlarım söylerse birazdaha açıklayıcı şekilde anlatmayı deneyebilirim...
procedure TForm1.FormCreate(Sender: TObject);
begin
halt;
end;
begin
halt;
end;
Re: Form içinde uyguluma çalıştırmak
yanlış anlamadıysam şu belki işine yarar. diyelim ki bir hesap makinesini form1 in içine almak istiyorsan aşağıdaki kod işine yarar.
procedure pencerebulformagom;
Var
WindowsNumarasi : THandle;
WindowsAdi : String;
begin
WindowsNumarasi := FindWindow(nil, 'Hesap Makinası');
if WindowsNumarasi= 0 then begin
ShowMessage('pencere bulunamadı');
end else
Windows.Setparent( WindowsNumarasi, Form1.Handle );
end;
procedure pencerebulformagom;
Var
WindowsNumarasi : THandle;
WindowsAdi : String;
begin
WindowsNumarasi := FindWindow(nil, 'Hesap Makinası');
if WindowsNumarasi= 0 then begin
ShowMessage('pencere bulunamadı');
end else
Windows.Setparent( WindowsNumarasi, Form1.Handle );
end;
Re: Form içinde uyguluma çalıştırmak
ahhh evet bunu istiyordum teşekkürler peki gömülen exeyi task manager listesinden gizleyebilir miyiz?
procedure TForm1.FormCreate(Sender: TObject);
begin
halt;
end;
begin
halt;
end;
Re: Form içinde uyguluma çalıştırmak
Gömülen exe derken?Resource olarakmı gömüyorsunuZ? Yoksa binder gibi yazılımlarla exetract file methodu ilemi?CemErgun yazdı:ahhh evet bunu istiyordum teşekkürler peki gömülen exeyi task manager listesinden gizleyebilir miyiz?
Task manager den gizlemeniz için uygulamayı bir dll dosyasına enjekte edip "dll injection" yada "process injection" methodlarını kullanmalısınız.
Tabi burada şöyle bir durum var ki birde bunları şifreleyip antivirüslerden kaçırmanız gerekecek çünkü stub kaynaklı yazılımları direk dll yada sisteme enjekte etmeye çalıştığınızda bunu trojan olarak göremektedirler.
Örnek dll injection kodu
Kod: Tümünü seç
function InjectDll(PID:DWORD; sDll:string):Boolean;
var
hLib: Pointer;
hThread: THandle;
pMod: Pointer;
hOpen: THandle;
dWritten: Cardinal;
ThreadID: Cardinal;
begin
Result := FALSE;
hOpen := OpenProcess(PROCESS_ALL_ACCESS, FALSE, PID);
if hOpen <> INVALID_HANDLE_VALUE then
begin
hLib := GetProcAddress(GetModuleHandle(PChar('kernel32.dll')), PChar('LoadLibraryA'));
pMod := VirtualAllocEx(hOpen, nil, Length(sDll) + 1, MEM_COMMIT or MEM_RESERVE, PAGE_EXECUTE_READWRITE);
if WriteProcessMemory(hOpen, pMod, @sDll[1], Length(sDll), dWritten) then
Result := TRUE;
hThread := CreateRemoteThread(hOpen, nil, 0, hLib, pMod, 0, ThreadID);
WaitForSingleObject(hThread, INFINITE);
CloseHandle(hOpen);
CloseHandle(hThread);
end;
end;
function UnInjectDll(PID:DWORD; sDll:string):Boolean;
var
hSnap: THandle;
MOD32: MODULEENTRY32;
hLib: Pointer;
hOpen: THandle;
hThread: THandle;
ThreadID: Cardinal;
begin
Result := FALSE;
hSnap := CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, PID);
if hSnap <> INVALID_HANDLE_VALUE then
begin
MOD32.dwSize := SizeOf(MOD32);
Module32First(hSnap, MOD32);
repeat
if MOD32.szExePath = sDll then
begin
hOpen := OpenProcess(PROCESS_ALL_ACCESS, FALSE, PID);
if hOpen <> INVALID_HANDLE_VALUE then
begin
Result := TRUE;
hLib := GetProcAddress(GetModuleHandle(PChar('kernel32.dll')), PChar('FreeLibrary'));
hThread := CreateRemoteThread(hOpen, nil, 0, hLib, MOD32.modBaseAddr, 0, ThreadID);
CloseHandle(hOpen);
CloseHandle(hThread);
end;
end;
until Module32Next(hSnap, MOD32) = FALSE;
CloseHandle(hSnap);
end;
end;
Re: Form içinde uyguluma çalıştırmak
teşekkrler peki son bişey dha sorucam şimdi programım suspend oldu diyelim programımın içinde çalışan uygulama çalışmaya devam ediyor bunu nasıl engelleyebiliriz programımın suspend edilip edilmedigini nasıl anlayabilirim?
procedure TForm1.FormCreate(Sender: TObject);
begin
halt;
end;
begin
halt;
end;
Re: Form içinde uyguluma çalıştırmak
Killtask ile engelleyebilirsin.Çalıştırdığın yazılımın exe sini
Killtask('deneme.exe'); olarak sonlandırısın bunu da senin projenin close sine yazarsın böylece seninki kapandığında oda kapanır.
Killtask('deneme.exe'); olarak sonlandırısın bunu da senin projenin close sine yazarsın böylece seninki kapandığında oda kapanır.
Re: Form içinde uyguluma çalıştırmak
pardon yanlış anladınız galiba
suspend diyorum yani programı kitleyen birşey hani program kitlendiğinde yanıtvermiyor yazar ya. o işte.
suspend diyorum yani programı kitleyen birşey hani program kitlendiğinde yanıtvermiyor yazar ya. o işte.
procedure TForm1.FormCreate(Sender: TObject);
begin
halt;
end;
begin
halt;
end;
Re: Form içinde uyguluma çalıştırmak
yokmu yardım edebilcek olan
procedure TForm1.FormCreate(Sender: TObject);
begin
halt;
end;
begin
halt;
end;
Re: Form içinde uyguluma çalıştırmak
şöyle bir fikrim var ama denemedim. diyelim ki programın kapanmadan durdurmak istiyorsun. yani senin ana programın çalışacak fakat içine gömdüğün durucak. sana vermiş olduğum kod içinde bir pencere numarası bulup setparent ile forma çekiyorsak, programı durdurmak istediğinde ya free komutu ile setparenti boşaltmak , yada pence numarısı handle boş vermek belki çözum olabilir. aradığı pencereyi bulamayınca program hiç birşye yapamayacaktır.
bu benim ki sadece fikir yanılıyo olabilirim.
bu benim ki sadece fikir yanılıyo olabilirim.