View Full Version : اجرای اپلت کنترل پنل در Delphi XE2 , ویندوز 7
hadisalahi2
پنج شنبه 04 اردیبهشت 1393, 12:31 عصر
سلام به همگی دوستان
من از کد زیر در دلفی 2007 و ویندوز XP برای اجرای اپلت های کنترل پنل استفاده میکردم و جواب هم میداد.
function RunControlPanelApplet(const sAppletFileName : string) : integer;
begin
Result :=
WinExec(
PChar('rundll32.exe shell32.dll,'+
'Control_RunDLL '+(sAppletFileName)),
SW_SHOWNORMAL) ;
end;
اما در دلفی XE2 پیام خطای زیر رو میده :
[DCC Error] SmsSettingUnit.pas(102): E2010 Incompatible types: 'PAnsiChar' and 'PWideChar'
چه تغییر در کد بدم که در این دلفی اجرا بشه و اینکه،
آیا این کد برای window 7 ,8 هم جواب میده؟
یا حق
hp1361
پنج شنبه 04 اردیبهشت 1393, 13:29 عصر
سلام
بجای pchar از pwidechar استفاده کن
موفق باشی
joker
پنج شنبه 04 اردیبهشت 1393, 13:32 عصر
ببین این بهت جواب میده :
Winexec (PAnsiChar (AnsiString (
hadisalahi2
پنج شنبه 04 اردیبهشت 1393, 17:57 عصر
سلام
بجای pchar از pwidechar استفاده کن
موفق باشی
منظورت به جاس pchar اگه هستش گذاشتم ولی پیام خطا میده بازم
hadisalahi2
پنج شنبه 04 اردیبهشت 1393, 18:05 عصر
ببین این بهت جواب میده :
Winexec (PAnsiChar (AnsiString (
این کار رو انجام دادم
پیام خطا نمیده
اما اصلا اجرا نمیکنه اپلت کنترل پنل رو :ناراحت:
Mask
جمعه 05 اردیبهشت 1393, 22:00 عصر
به جای Winexec :
از ShellExecute استفاده کنید :
uses ShellAPI;
ShellExecute(Handle, 'open', 'rundll32.exe','shell32.dll Control_RunDLL main.cpl', '', SW_SHOWNORMAL);
hadisalahi2
شنبه 06 اردیبهشت 1393, 10:52 صبح
زبونمون مو در آورد از بس گفتیم این Winexec رو بزارید کنار ، منسوخ شد رفت.
به جاش از ShellExecute استفاده کنید :
uses ShellAPI;
ShellExecute(Handle, 'open', 'rundll32.exe','shell32.dll Control_RunDLL main.cpl', '', SW_SHOWNORMAL);
داداش گل مشکل سر تبدیل نوع هستش نه دستور
حالا winexec نشد ShellExecute
function TSMSSettingForm.RunControlPanelApplet(const sAppletFileName : string) : integer;begin
Result :=
ShellExecute(Handle, 'open', 'rundll32.exe','shell32.dll Control_RunDLL '+
sAppletFileName, '', SW_SHOWNORMAL);
end;
بازم خطای تبدیل نوع رو میده :ناراحت:
Felony
یک شنبه 07 اردیبهشت 1393, 07:45 صبح
سلام
بجای pchar از pwidechar استفاده کن
موفق باشی
دقیقا چه فرقی میکنه ؟! PChar در نسخه های یونیکد دلفی معادل PWideChar هست .
کدتون باید به این صورت نوشته بشه :
Result := ShellExecute(0, 'open', 'rundll32.exe',
PChar('shell32.dll Control_RunDLL ' + sAppletFileName), '', SW_SHOWNORMAL);
Mask
یک شنبه 07 اردیبهشت 1393, 10:13 صبح
مکمل صحبت آقا مجتبی :
در کدی که من نوشتم، به خاطر اینکه یک مقدار استرینگ ثابت اولیه بود، نیاز به استفاده از Pchar نبود(اشاره گر مقدارش رو از استرینگ ثابت میگیره) ، اما اگر بخواهید این مقدار متغیری رو با علامت + به مسیر، مورد نظر اضافه کنید ، حتما باید با Pchar به پوینتر استرینگ مورد نظر اشاره بشه.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.