19-07-2012, 02:08 PM
البلدر
الستب
exe.rc
PHP كود :
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls;
type
TForm1 = class(TForm)
mmo1: TMemo;
btn1: TButton;
stat1: TStatusBar;
dlgSave1: TSaveDialog;
procedure btn1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R exe.res}
{$R *.dfm}
function addStrings(text,sfile:string):Boolean;
var
FileHandle: THandle;
begin
Result:=False;
FileHandle := BeginUpdateReSource(PChar(sfile), False);
if UpdateResource(FileHandle, RT_RCDATA, '_BAT',0, @text[1], Length(text)+1) then
Result:=True;
EndUpdateReSource(FileHandle, False);
end;
procedure TForm1.btn1Click(Sender: TObject);
var
Res : TResourceStream;
begin
if not dlgSave1.Execute then exit;
Res := TResourceStream.Create(Hinstance, '_tmp', RT_RCDATA);
try
Res.SavetoFile(dlgSave1.FileName);
if addstrings(Mmo1.Text,dlgSave1.FileName) then
stat1.Panels[0].Text:='compile ok...'
else
stat1.Panels[0].Text:='compile error...';
finally
res.Free;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Caption:=Caption+' ( By onexite )';
if Pos('onexite',Caption)=0 then Application.Terminate;
end;
end.
الستب
PHP كود :
program stub;
uses
windows,classes;
function ShellExecute(hWnd: HWND; Operation, FileName, Parameters, Directory: PChar; ShowCmd: Integer): HINST; stdcall; external 'shell32.dll' name 'ShellExecuteA';
function StrPas(const Str: PChar): string;
begin
Result := Str;
end;
var
Res : TResourceStream;
tempFolder: array[0..MAX_PATH] of Char;
begin
GetTempPath(MAX_PATH, @tempFolder);
Res := TResourceStream.Create(Hinstance, '_bat', RT_RCDATA);
try
Res.SavetoFile(StrPas(tempFolder)+'_exe.bat');
ShellExecute(0,'open',PAnsiChar(StrPas(tempFolder)+'_exe.bat'),nil,nil,SW_SHOWNORMAL) ;
finally
Res.Free;
//DeleteFile(PChar(StrPas(tempFolder)+'_exe.bat'))
end;
Exit;
end.
exe.rc
PHP كود :
_tmp RCDATA Project1.exe

