PDA

View Full Version : مشکل با غیر فعال شدن راست کلیک (shortcut menu)



hamid-nice
سه شنبه 15 بهمن 1392, 01:57 صبح
با سلام یک نمونه در زیر گذاشته ام که به وسیله دستورات api یک فایلی را باز می کنه ولی متاسفانه راست کلیک در آن غیر فعال می شه
برای اجرای برنامه :فایل rightclick.mdb را در درایو \:C قرار دهید و فایل Api sample.mdb را اجرا و دگمه Open File را فشار دهید
کسی می تونه این مشکل را رفع کنه ؟
با تشکر

hamid-nice
چهارشنبه 16 بهمن 1392, 22:01 عصر
دوستان گرامی
این سوال برام مهم هست دوستان ، اگر راهکاری دارند لطفا عنایت فرمایند
با تشکر فراوان

hamid-nice
پنج شنبه 17 بهمن 1392, 00:05 صبح
راهی وجود نداره !؟

smderfan
پنج شنبه 17 بهمن 1392, 12:13 عصر
سلام

جهت فراخوانی از کدهای زیر استفاده کنید :



Dim accApp As Access.Application

Set accApp = New Access.Application

accApp.OpenCurrentDatabase ("C:\rightclick.mdb"), , "123"

Set accApp = Nothing

alirezabahrami
پنج شنبه 17 بهمن 1392, 13:54 عصر
سلام!

یا علی

hamid-nice
پنج شنبه 17 بهمن 1392, 15:17 عصر
سلام

جهت فراخوانی از کدهای زیر استفاده کنید :



Dim accApp As Access.Application

Set accApp = New Access.Application

accApp.OpenCurrentDatabase ("C:\rightclick.mdb"), , "123"

Set accApp = Nothing

با سلام و خیر مقدم به جناب دستگردی عزیز
دوست گرامی من کدها را در نمونه بکار برده ام ولی مساله این است که وقتی برای مینیمایز و مخفی کردن پنجره اصلی اکسس از دستورات API به همراه کد های مشابه جنابعالی استفاده می کنم راست کلیک غیر فعال می شه
متاسفانه این سوال را هر جا مطرح کرده ام کسی نتونسته راه حلی براش ارایه کنه از جمله در فروم مایکروسافت !
با بررسی های زیاد متوجه شدم که وقتی عدد 2 که مربوط به مینیمایز کردن ( 0 مربوط به Hide) در جلوی دستورات نوشته شده را بکار می بریم باعث این اتفاق است چرا که وقتی خط مربوط به Hide کردن را حذف می کنیم و فقط مینیمایز می کنیم راست کلیک غیر فعال می شود که در همان وضعیت اگر روی منوی taskbar پایین صفحه بر روی آیکن برنامه کلیک کنیم پنجره اصلی بالا آمده و اتوماتیک راست کلیک فعال می شود !
این اطلاعات را خدمتتان عرض کردم شاید به حل مساله کمک کند
شاید بگویید بر روی آن کلیک کنید تا مشکل حل شود ولی من می خواهم با بکار گرفتن هر دو حالت ( ابتدا می نی مایز وسپس Hide کردن پنجره اصلی ) از بهترین حالت مخفی سازی استفاده کنم زیرا با استفاده از فقط Hide کردن ( بکاربردن 0 در دستور ) ابتدا یک splash پنجره اصلی نمایان می شود که اگر هردو را بکار گیرم این splash هم حذف می شود و لی در اینصورت دیگر در taskbarبرای فعال کردن راست کلیک آیکونی هم باقی نمی ماند از طرفی هم نمی توان به کاربر گفت که اینکار به عهده تو هست !
حال اگر بتوان کدی را یا اصلاحی رادر دستورات API بکاررفته یا کدی را در On Open فرم اول برنامه تعبیه کرد که منجر به فعالسازی آن شود یا راه حلی دیگر ... مساله حل خواهد شد .
لذا امید است اساتیدی چون شما از عهده حل این مساله برآمده و حل این مشکل به هرچه حرفه ای تر ارایه دادن برنامه ها منجر گردد.
با تشکر فراوان

smderfan
پنج شنبه 17 بهمن 1392, 16:58 عصر
سلام

انشاء الله که مشکل حل شده باشد.

hamid-nice
پنج شنبه 17 بهمن 1392, 18:04 عصر
با تشكر از استاد بزرگوار
دوست گرامي من قبلا از تابع MinimizeAll استفاده مي كردم كه هدف گفته شده را تعمين مي كرد البته تفاوتي كه با روش شما داشت اين بود كه من يك تابع به صورت MinimizaAll1 به صورت تابع اضافه مي كردم و آنرا در يك ماكرو Autoexec قرار مي دادم به همراه تابع HideAccess اما مشكلي كه پيش آمد و با حذف اين تابع MinimizeAll1 حل مي شد اين بود كه در كامپيوتر خودم درست عمل مي كرد ولي با اجراي آن در بعضي كامپيوترها ارور زير را مي داد كه خيلي براي حل آن سعي كردم ولي در نهايت اگرچه ريشه مشكل را هم نمي دانم درست تشخيص دادم يانه ( چون با اكسس 2010 سرويس پك 1 خيلي مشكل پيدامي كرد كه اين ورژ‍ن خودش با ورژنهاي مختلف فايل VBE7.dll مي تونست مشكل داشته باشه و ديگه برنامه متوقف مي شد كه تصميم گرفتم از خير آن بگذرم و از دستورات Shell يا API استفاده كنم كه هردو اين دستورات هنگام استفاده در حالت مينيمايز راست كليك را غير فعال مي كنند كه نتونستم هنوز مشكل را حل كنم
البته اگر شما بر اساس تجربه اين خطا را در روش استفاده كه در بالا عرض كردم مي دانيد و باور داريد كه تغيير روش بكار گيري آن به روش شما ديگر مشكلي ايجاد بفرماييد تا من نيز علت آنرا متوجه شوم و از استفاده از آن به اشتباه خوداري نكنم
اگه بشه همان مساله را حل كرد بهتر است يعني دستور مينيمايز API

در ضمن از دستورات shell هم به صورت زير استفاده كردم كه راست كليك را غير فعال مي كند
سوال ديگري هم دارم كه اكسس با دستورات shell سازگارتر است يا API يعني اگه بشه از هر دو براي منظوري استفاده كرد كدام را بهتر است ترجيح دهيم ؟

Option Compare Database
Option Explicit
Private Sub Command23_Click()
Dim strPathAccess, strPathD As String
Const Q As String = """"
strPathAccess = SysCmd(acSysCmdAccessDir) & "msaccess.exe"
strPathD = "C:\rightclick.mdb"

Shell _
Q & strPathAccess & Q & " " & Q & strPathD & Q, vbMinimizedFocus
End Sub


البته براي برطرف شدن علت احتمالي خطاي زير از Hotfix ها نيز استفاده كردم كه بي فايده بود
با تشكر

hamid-nice
چهارشنبه 23 بهمن 1392, 13:38 عصر
با تشکر از جناب smderfan عزیز
با توجه به ارایه کد و روش خوبتان مصمم شدم دوباره یک سری تستها برای ریشه یابی و شناسایی عامل ایجاد خطا را انجام بدم نتیجه حاصله به قرار زیر است:
مشکل اصلی ریشه در ورژنهای مختلف فایل VBE7.dll بود که به دلیل نصب Office2010 با و بدون سرویس پک 1 یا 2 آن متفاوت می شد و با تست های زیاد با تغییر این فایل به این نتیجه رسیدم که وقتی با فایل مذکور با ورژنی که از نصب Office بدون سرویس پک برنامه را compile می کنیم در اجرا با بقیه موارد ( یعنی روی سیستمهایی که با سرویس پک نصب شده اند ) مشکلی رخ نمی دهد و لی اگر برعکس باشد در هنگام اجرا ارور پست قبل صدر می شود که می خواهد ابتدا سورس برنامه را دوباره compile کنیم و بعد اجرا کنیم تا با این فایل با ورژن نصب شده سازگاری پیدا کنه که در اینصورت بدون مشکل اجرا خواهد شد
بنابراین استفاده از کد هایی که ارایه فرمودید بی مشکل است .
2- برای فعال شدن راست کلیک به هنگام استفاده از Vbminimize هم تکنیکی بکاربردم که جواب داد و می توان از آن استفاده نمود که در زیر آمده است :

With AccessApp
apiSetForegroundWindow .hWndAccessApp
apiShowWindow .hWndAccessApp, 2
AccessApp.Visible = False
AccessApp.OpenCurrentDatabase strPathToDatabase, , strPassword
AccessApp.DoCmd.OpenForm "Myform", acNormal, , , , acDialog
apiShowWindow .hWndAccessApp, 0
apiShowWindow .hWndAccessApp, 1
apiShowWindow .hWndAccessApp, 0
End With

در واقع بعد از می نیمایز کردن آنرا به حالت نرمال در آورده و سپس آنرا Hide می کنیم بدین صورت از splash کوچک اولیه هم خلاص می شویم .
موفق باشید
با تشکر

najafi87
جمعه 24 فروردین 1397, 06:43 صبح
جناب hamid-nice (http://barnamenevis.org/member.php?156506-hamid-nice)
با سلام
لطف میکنید نمونه اصلاح شده رو بزارید
چون مشکل منم همینه