Ahmed18
10-04-2010, 01:15 PM
بسم الله الرحمن الرحيم
أ عمل Shell Integration مع برنامج فاحص ملفات بالدلفي وبعد عمل Procedure الخاص بتسجيل مسار البرنامج في الريجستر تواجهني مشكلة مع ايجاد مسار الملف المفحوص عند فتحة بواسطة برنامج الدلفي
فقد استخدمت هذة الأكواد مع ال MainForm.Create الرئيسية:
procedure TFormMain.FormCreate(Sender: TObject);
var
aFile_Cmd : String;
filename_Cmd : array[0..MAX_PATH] of char;
i,j : integer;
hInstance, cmdline : DWORD;
begin
hInstance := GetModuleHandle(nil);
GetModuleFileName(hInstance,@filename,512);
aFile := '"'+StrPas(Pchar(@filename))+'"'+' ';
aFile_Cmd := GetCommandLine();
if (aFile <> aFile_Cmd) then
begin
filename_Cmd := '';
i := 1;
j := 0;
aFile := '';
while (i <= Length(aFile_Cmd))do
begin
if (aFile_Cmd[i] <> '"') AND (aFile_Cmd[i] <> ' ') then
begin
filename_Cmd[j] := aFile_Cmd[i];
j := j+1;
end;
i := i +1;
end;
EdtPathName.Text:= Drag_Check_IfValidPE(aFile,filename_Cmd);
end;
المفترض الأن ان المتغير filename_Cmd سيحتوي علي مسار البرنامج المفحوص لكن الذي يحدث غير ذلك ويحدث خطأ مع الدالة CreateFile فيما بعد بسبب ان المسار غير سليم!!
فما هي الطريقة السليمة لعمل ذلك مع الدلفي ؟
أ عمل Shell Integration مع برنامج فاحص ملفات بالدلفي وبعد عمل Procedure الخاص بتسجيل مسار البرنامج في الريجستر تواجهني مشكلة مع ايجاد مسار الملف المفحوص عند فتحة بواسطة برنامج الدلفي
فقد استخدمت هذة الأكواد مع ال MainForm.Create الرئيسية:
procedure TFormMain.FormCreate(Sender: TObject);
var
aFile_Cmd : String;
filename_Cmd : array[0..MAX_PATH] of char;
i,j : integer;
hInstance, cmdline : DWORD;
begin
hInstance := GetModuleHandle(nil);
GetModuleFileName(hInstance,@filename,512);
aFile := '"'+StrPas(Pchar(@filename))+'"'+' ';
aFile_Cmd := GetCommandLine();
if (aFile <> aFile_Cmd) then
begin
filename_Cmd := '';
i := 1;
j := 0;
aFile := '';
while (i <= Length(aFile_Cmd))do
begin
if (aFile_Cmd[i] <> '"') AND (aFile_Cmd[i] <> ' ') then
begin
filename_Cmd[j] := aFile_Cmd[i];
j := j+1;
end;
i := i +1;
end;
EdtPathName.Text:= Drag_Check_IfValidPE(aFile,filename_Cmd);
end;
المفترض الأن ان المتغير filename_Cmd سيحتوي علي مسار البرنامج المفحوص لكن الذي يحدث غير ذلك ويحدث خطأ مع الدالة CreateFile فيما بعد بسبب ان المسار غير سليم!!
فما هي الطريقة السليمة لعمل ذلك مع الدلفي ؟