PDA

View Full Version : اينترنت اكسپلورر فقط يك با ر اجرا شود



mohsen_r
یک شنبه 19 اردیبهشت 1389, 09:25 صبح
مي دونم شايد سوالم تكراري باشه ولي چون من تواين زمينه هيچوقت كار نكردم و همه تاپيك ها را هم خوندم نتونستم مشكلم را حل كنم لطفا راهنمائي كنيد
while FindWindow( nil,'iexplore.exe')=0 do
ShellExecute(Handle, nil, 'c:\Program Files\Internet Explorer\iexplore.exe', nil, nil, SW_SHOWNORMAL);
من ميخوام با دستور بالا فقط برنامه يك بار بيشتر اجرا نشه ولي جواب نميده اشكال كجاست

حسین شهریاری
یک شنبه 19 اردیبهشت 1389, 10:16 صبح
ببین جواب میده یا نه؟


var
cnt:byte=0;
if cnt=0 then
begin
ShellExecute(Handle, nil, 'c:\Program Files\Internet Explorer\iexplore.exe', nil, nil, SW_SHOWNORMAL);
cnt:=cnt+1;
end;

mohsen_r
یک شنبه 19 اردیبهشت 1389, 10:24 صبح
ببین جواب میده یا نه؟


var
cnt:byte=0;
if cnt=0 then
begin
ShellExecute(Handle, nil, 'c:\Program Files\Internet Explorer\iexplore.exe', nil, nil, SW_SHOWNORMAL);
cnt:=cnt+1;
end;

ميشه بگيد برنامه در حال اجرا كجا چك ميشه cnt يك شمارش گر عادي البته به نظر من؟ چون من نمي خوام خارج از برنامه من اينترنت اكسپلورر هم اجرا بشه

Felony
یک شنبه 19 اردیبهشت 1389, 10:32 صبح
منظورتون برنامه IE هست یا برنامه خودتون ؟!


ببین جواب میده یا نه؟


var
cnt:byte=0;
if cnt=0 then
begin
ShellExecute(Handle, nil, 'c:\Program Files\Internet Explorer\iexplore.exe', nil, nil, SW_SHOWNORMAL);
cnt:=cnt+1;
end;

خیر جواب نمیده ، اگر قبلا IE از بیرون برنامه اجرا شده باشه شمارشگر برنامه شما به روز نیست .

mohsen_r
یک شنبه 19 اردیبهشت 1389, 11:08 صبح
دقيقا" چيزي بود كه من نوشتم ولي جواب نميده و مقدار hendel هميشه صفر ميشه

Felony
یک شنبه 19 اردیبهشت 1389, 11:17 صبح
من گفتم کد رو تو Notepad نوشتم ، شما تو چه ویندوزی از این کد استفاده میکنید ؟
وقتی مقدار بازگشتی از فراخوانی تابع FindWindow عدد 0 باشد به این معنا هست که پنجره یافت نشده و این به این معنا هست که یا پنجره وجود ندارد یا شما نام کلاس و عنوان رو اشتباه به تابع دادید که در این مورد فکر میکنم شما نام کلاس رو اشتباه به تابع دادید ، اگر از ویندوز 7 استفاده میکنید نام کلاس پنجره IE از iExplorer به IEFrame تغییر کرده .

mohsen_r
یک شنبه 19 اردیبهشت 1389, 11:23 صبح
ويندوزم xp
آيا حروف كوچك بزرگ تو نوشتن كلاس فرق ميكنه

Felony
یک شنبه 19 اردیبهشت 1389, 11:34 صبح
نه فرقی نمیکنه ، من تازه الان کدتون رو کامل مطالعه کردم ، برادر من تابع FindWindow دارای دو پارامتر ورودی هست ، اولی نام کلاس پنجره مورد نظر و دومی عنوان پنجره مورد نظر ، شما تو کدت کلاس رو که به پوچ اشاره دادی و عنوان رو هم IExplorer.exe ذکر کردی ، در صورتی که IExplorer.exe نام پروسه برنامه IE هست نه نام کلاس یا عنوان .

توسط برنامه ضمیمه میتونید نام کلاس و عنوان پنجره رو به دست بیارید ، چون عنوان پنجره IE بسته به نام سایت متغییر هست پارامتر عنوان رو به پوچ اشاره بدید ( nil ) و فقط پارامتر اول که کلاس هست رو مقدار دهی کنید .