ورود

View Full Version : یک برنامه مثل winamp



Sohrab_Tapar
پنج شنبه 03 دی 1383, 08:04 صبح
من میخام یه برنامه بنویسم که مثل winamp فقط یک نمونه (instance) از ان در
هر لحظه در حال اجرا باشه و علاوه بر این
هنگامی که بر روی نوع خاصی از فایل (مثلا با پسوند aaa) دبلکلیک میکنم و
در نتیجه برنامه من اجرا میشود بتوانم نام و آدرس فایل با پسوند aaa را پیدا کنم.

مهدی کرامتی
پنج شنبه 03 دی 1383, 11:35 صبح
سوال اول قبلا پاسخ داده شده.

در مورد دوم هم باید File Extenstion برای فایل مورد نظر رجیستر کنید:

unit utils;

interface
uses Registry, ShlObj, SysUtils, Windows;

procedure RegisterFileType(cMyExt, cMyFileType, cMyDescription, ExeName: string; IcoIndex: integer; DoUpdate: boolean = false);

implementation

procedure RegisterFileType(cMyExt, cMyFileType, cMyDescription, ExeName: string; IcoIndex: integer; DoUpdate: boolean = false);
var
Reg: TRegistry;
begin
Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_CLASSES_ROOT;
Reg.OpenKey(cMyExt, True);
// Write my file type to it.
// This adds HKEY_CLASSES_ROOT\.abc\(Default) = 'Project1.FileType'
Reg.WriteString('', cMyFileType);
Reg.CloseKey;
// Now create an association for that file type
Reg.OpenKey(cMyFileType, True);
// This adds HKEY_CLASSES_ROOT\Project1.FileType\(Default)
// = 'Project1 File'
// This is what you see in the file type description for
// the a file's properties.
Reg.WriteString('', cMyDescription);
Reg.CloseKey; // Now write the default icon for my file type
// This adds HKEY_CLASSES_ROOT\Project1.FileType\DefaultIcon
// \(Default) = 'Application Dir\Project1.exe,0'
Reg.OpenKey(cMyFileType + '\DefaultIcon', True);
Reg.WriteString('', ExeName + ',' + IntToStr(IcoIndex));
Reg.CloseKey;
// Now write the open action in explorer
Reg.OpenKey(cMyFileType + '\Shell\Open', True);
Reg.WriteString('', '&Open');
Reg.CloseKey;
// Write what application to open it with
// This adds HKEY_CLASSES_ROOT\Project1.FileType\Shell\Open\Com mand
// (Default) = '"Application Dir\Project1.exe" "%1"'
// Your application must scan the command line parameters
// to see what file was passed to it.
Reg.OpenKey(cMyFileType + '\Shell\Open\Command', True);
Reg.WriteString('', '"' + ExeName + '" "%1"');
Reg.CloseKey;
// Finally, we want the Windows Explorer to realize we added
// our file type by using the SHChangeNotify API.
if DoUpdate then SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nil, nil);
finally
Reg.Free;
end;
end;

end.

Sohrab_Tapar
جمعه 04 دی 1383, 13:53 عصر
مشکلم اینه چطوری میتونم نام و مسیر فایلی را که روی آن دبل کلیک شده در برنامه اصلیم پیدا کنم
در خقیقت نام فایلی که موجب اجرا یا دوباره اجرا شدن برنامه ام شده چیست.

hr110
جمعه 04 دی 1383, 17:13 عصر
از paramstr استفاده کن

Sohrab_Tapar
جمعه 04 دی 1383, 22:18 عصر
میشه راهنمایی کنید در مورد سوال اول من در مورد چه چیزی جستجو کنم.
یعنی روی چه کلماتی؟

vcldeveloper
شنبه 05 دی 1383, 03:17 صبح
میشه راهنمایی کنید در مورد سوال اول من در مورد چه چیزی جستجو کنم.
http://www.barnamenevis.org/forum/viewtopic.php?t=2850&highlight=instance

Sohrab_Tapar
جمعه 11 دی 1383, 19:22 عصر
فرض کنید فایل
a.aaa را دبل کلیک کنم و برنامه اجرا بشه.
سپس فایل
b.aaa را دبل کلیک کنم.
در چه event و چطوری میتونم نام فایل
b.aaa را بدست بیاورم.

Sohrab_Tapar
شنبه 12 دی 1383, 18:54 عصر
من فهمیدم کجا اسم فایل را باید بدست بیاورم
ولی نمیدونم اسم فایل را چطوری باید بدست بیاورم
paramstr پس از اجرای اول هیچ تغییری نمیکنه

Sohrab_Tapar
دوشنبه 14 دی 1383, 19:33 عصر
هیچ کسی نمیدونه؟