کلینیک فوق تخصصی اکسس ( کاربرد vba در اکسس )

کلینیک فوق تخصصی اکسس ( کاربرد vba در اکسس )

به اشتراک گذاری اطلاعات کسب شده در اکسس از سایت آفیس و سایت های تخصصی خارجی
کلینیک فوق تخصصی اکسس ( کاربرد vba در اکسس )

کلینیک فوق تخصصی اکسس ( کاربرد vba در اکسس )

به اشتراک گذاری اطلاعات کسب شده در اکسس از سایت آفیس و سایت های تخصصی خارجی

تئوری پنهان کردن پنجره اصلی اکسس


ماده ۱۴- ایجاد نقاط امنویرایش

‌ماده ۱۴- دولت‌های متعاهد در زمان صلح و دولت‌های متخاصم پس از شروع جنگ می‌توانند در خاک خود و در صورت لزوم در اراضی اشغالی، نواحی و نقاط‌ بهداری و امنیت ایجاد کرده و تشکیلات آن را طوری بدهند که زخمداران و بیماران و معلولین و پیران و اطفال کمتر از ۱۵ سال و زنان‌ باردار و مادران اطفال‌ کمتر از ۷ سال را از اثرات جنگ پناه دهند... ‌از دولت‌های حامی و کمیتهٔ بین‌المللی صلیب سرخ دعوت می‌شود که برای تسهیل ایجاد و شناسائی نقاط و نواحی مزبور وساطت و کمک نمایند.




این یک تئوری است که هر شخصی می تواند خودش مورد آزمایش قرار دهد البته این روش (ها) بعلت هک شدن پنجره توسط هکر(ها)  مورد توصیه Office نیست ... در ضمن کامل نیست چون عوامل غیر قابل پیش بینی دیگری ممکن است برای عدم موفقیت آن دخیل باشند.


زمانیکه می خواهید اینترفیس اپلیکیشن ( رابط برنامه )  را پنهان کنید تمام فرم ها می بایست به حالت popup تنظیم شوند تا  مستقل از بقیه اینترفیس اپلیکیشن که پنهان می کنید ظاهر شوند.


ساده ترین روش برای مخفی کردن رابط برنامه استفاده از تابع ویندوزی ShowWindow در رویداد Load فرم است ( SHOWMINIMIZED) به همراه متد Docmd.Restore که باید error handling ( بررسی خطاها ) را هم شامل شود. ( به شدت توصیه می شود)


اگر چه کد خیلی ساده ایست ولی یک مطلب مهمی وجود دارد ، اگر کاربری روی آیکون اکسس در نوار وظیفه ( taskbar ) کلیک کند رابط برنامه بازیابی میشه ( نمایان می شود ).بسیار بعید است که بسیار مطلوب باشد ولی برای برطرف کردن آن در  فرم ( نه فرم Split ) از Painting ، تابع ویندوزی  SetWindowLong و متد Docmd.Restore استفاده می نُمایند.


WS_EX_APPWINDOW=&H40000 :


زمانیکه پنجره قابل مشاهده است ، یک پنجره top-level را داخل نوار وظیفه ( taskbar ) تحمیل می کند.

.

اول استفاده از SetWindowLong  سپس ShowWindow برای مخفی کردن اپلیکیش اکسس و دوباره نمایش فرم جاری.

هر چند در بعضی موارد نمایش آیکون در taskbar اتفاق می افتد و راه حلی وجود ندارد.

برای فرم Split ( که شامل یک نمای datasheet در بالا یا پائین آن است ) باید در تابع ویندوزی SetWindowLong ، از تابع GetParent استفاده کرد ( برای گرفتن هندل [ یک مقدار که همیشه تغییر می کند ] پنجره والد یا مالک )  و تابع ShowWindow برای نمایش والد فرم ( استفاده از GetParent فرم در آرگومان hWnd )  و بدون هاید کردن رابط برنامه 


گزارشات را به همین روش فرم ها نمی توان مدیریت کرد.برای مثال کاربران راهی برای چاپ گزارشات لازم دارند.برنامه یا اپلیکیشن شامل چندین متد نمایش گزارشات زمان مخفی شدن اینترفیس برنامه است.

۱-استفاده از report view و شامل یک دکمه چاپ ( print button ) روی خود گزارش

۲-استفاده از print preview با بازیابی ( برگرداندن ) نوار پیش نمایش چاپ ( print preview ribbon ) در حالیکه گزارش باز است و پس از بسته شدن دوباره پنهان می شود.

انجام این کار قابلیت های اضافی از جمله گزینه ذخیره بعنوان PDF ( و غیره ) را می دهد.

هنگامیکه پنجره برنامه اکسس پنهان است ، فرم های بدون حاشیه ( Border ) برای یک رابط تمیز به خوبی کار می کنند. با این حال ، از آنجایی که فرم های بدون حاشیه ( Border ) نوار عنوان ( title bar ) ندارند ، معمولاً نمی توان آن ها را روی صفحه جابجا کرد.


راه حل برای این مورد درگ کردن فرم با نگهداشتن دکمه چپ ماوس به سمت پائین است که در رویداد هدر فرم از تابع ویندوز ReleasCapture و SendMessage استفاده می شود.


WM_NCLBUTTONDOWN :

&HA1 Or Decimal >>>161=10(A)×16+1

ویندوزمسیج_نان کلاینت باتن داون

هنگامیکه کاربر دکمه چپ ماوس را می فشرد در حالیکه کرسر ( مکان نما ) داخل منطقه nonclient پنجره است ، این پیام ارسال میشود.این به پنجره ای که کرسر را داخل خود دارد ارسال می شود .اگر پنجره ای ماوس را گرفته باشد ، این پیام پست نمی شود.


یک پنجره این پیام را از طریق ( through ) تابع WindowProc خودش دریافت می کند.


موقعیت مکان نما 

Hittest

HTCAPTION=2
HTMINBUTTON=8
HTMAXBUTTON=9


ReleaseCapture :

گرفتن ( فرآیند ضبط ) ماوس از پنجره ای در رشته ( thread ) جاری را رها می کند و فرآیند ورودی عادی ماوس را بازیابی می کند. پنجره ای که ماوس را گرفته صرفنظر از موقعیت مکان نما ، تمام ورودی ها ماوس را دریافت می کند ، جز زمانیکه دکمه ماوس کلیک می شود در حالیکه نقطه داغ مکان نما  HotSpot در پنجره رشته دیگری است.

HotSpot نقطه ای در مکان نما است که با سایر عناصر روی صفحه در تعامل است.

SendMessageA(hWnd,Msg,wParam, lParam )

Msg:WM_NCLBUTTONDOWN

wParam : HTCAPTION

lParam : Zero


یک برنامه کاربردی از یک یا چند فرآیند ( process ) تشکیل شده . یک فرآیند ، در ساده ترین عبارت ، یک برنامه اجرایی است . یک یا چند thread  در زمینه فرآیند اجرا می شود.thread واحد اصلی است که سیستم عامل زمان پردازنده را به آن اختصاص می دهد.یک thread می تواند هر بخشی از کد فرآیند را اجرا کند ، از جمله قسمت هایی که در حال حاضر توسط thread دیگری اجرا می شوند.


SetWindowPos :


تغییر سایز ، موقعیت و ترتیب پنجره چایلد ، پاپ آپ یا تاپ لول . این پنجره ها طبق نُمودشان در صفحه مرتب می شوند . بالاترین پنجره بالاترین رتبه را دریافت کرده و اولین پنجره در Z Order است.



BOOL SetWindowPos( [in] HWND hWnd, [in, optional] HWND hWndInsertAfter, [in] int X, [in] int Y, [in] int cx, [in] int cy, [in] UINT uFlags );


HWND : 

HWND_TOP(HWND)=0

قراردادن پنجره در بالای Z Order

Places the window at the top of the Z order.
HWND_TOPMOST(HWND)=-1

قرار دادن پنجره بالای تمام پنجره هایی که حالت topmost نیستند.پنجره حتی زمان غیرفعال بودن نیز در حالت topmost خودش باقی می ماند.

Places the window above all non-topmost windows. The window maintains its topmost position even when it is deactivated

uFlags : 

می تواند ترکیبی از مقادیر باینری زیر باشد

SWP_NOACTIVATE=&H10
SWP_NOSIZE=&H1
SWP_NOMOVE=&H2
SWP_NOOWNERZORDER=&H200
SWP_SHOWWINDOW=&H40
SWP_HIDEWINDOW=&H80






SendDlgItemMessage wParam, &H1324,EM_SETPASSWORDCHAR, asc("*"), &H0



Public Function NewProc(ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As LongPtr
If  Msg < HC_ACTION Then
NewProc = CallNextHookEx(hHook, Msg , wParam, lParam)
Exit Function
End If
'This line will ensure that any other hooks that may be in place are
'called correctly.

' ClassName Of InputBox Or Messagebox =&32770

CallNextHookEx hHook, Msg, wParam, lParam
End Function



Function InputBoxhk(Prompt, Title) As String
Dim lngThreadID As Long
lngThreadID = GetCurrentThreadId
lngModHwnd = GetModuleHandle(vbNullString)
hHook = SetWindowsHookEx(WH_CBT, AddressOf NewProc, lngModHwnd, lngThreadID)
InputBoxhk= InputBox(Prompt, Title)
UnhookWindowsHookEx hHook
End Function






If IsNull(txtBatteryID + cmbModelNumber + cmbChemistryType + txtSpecVoltage + txtSpecCapacity) = False Then






قتل کارگردان و نویسنده مهرجویی و همسرش مهر ۱۴۰۲

اما همسو با جریان ضدانقلاب خارج نشین، یک جریان داخلی نیز سعی کرد از این فرصت استفاده کرده تا روایت ضدحکومتی مطلوب خود را بسازد. نکته نخست اینکه چهره‌های امنیتی و سیاسی جریان اصلاح‌طلب با صدور پیام‌های بی‌سابقه‌ای با تأکید روی کلیدواژه‌هایی مانند «نگرانی مردم» و «لزوم شفاف سازی» تلاش کردند دامنه ابهام این حادثه را توسعه دهند و نکته دوم و مهم‌تر اینکه افرادی مانند عمادالدین باقی و مهدی یزدانی خرم از طریق موازی نمایی قتل داریوش مهرجویی با قتل‌های زنجیره‌ای در دهه ۷۰، همسو با گروهک منافقین و طیف‌های رادیکال ضدانقلاب، انگاره سیاسی بودن قتل را بدون ذکر هیچ مدرکی و صرفاً براساس ذوقیات و تشابه اسمی و زمانی (فصل پاییز) بازنمایی کردند!


آخر و عاقبت یک کارگردان مشهور ۸۵ ساله

بر اساس اطلاعات به دست آمده وضعیت اجساد نشان می‌داد ابتدا داریوش مهرجویی به قتل رسیده است. عاملان قتل با چوب که به نظر می‌رسد مربوط به درخت آلبالو است به سر او کوبیده و لکه‌های خون روی این چوب دیده شده است. بعد از اینکه داریوش مهرجویی گیج شده شاهرگ او را قطع کرده و جسدش را مقابل آشپزخانه رها کرده‌اند.

جسد همسرش وحیده محمدی‌فر در یکی از اتاق خواب‌ها پیدا شده است. گلوی او هم بریده شده، اما آثار بر جای مانده روی بدن این زن نشان می‌دهد او با عاملان قتل درگیر شده و شکستگی‌هایی نیز روی دست و پای او وجود داشته است.


به گزارش رسانه‌های ایران، هریکندی ابراز داشت: ضرباتی با چوب و یا جسم سخت نیز به سر مرحوم مهرجویی برخورد کرده که منجر به شکستگی سر نشده و علت فوت نبوده است. طبق گزارش پزشکی قانونی فرضیه‌ها درمورد تجاوز در مورد هر دو نفر از مقتولین منتفی است.


رییس پیشین کانون وکلای تهران در آخر بیان کرد: با توجه به شرایط اقتصادی کشور با نوعی افزایش بزهکاری علیه اشخاص و اموال مواجه شده‌ایم و این موضوع احساس ناامنی را در مردم افزایش داده است. نه‌تنها سرقت اولی‌ها افزایش یافته بلکه سرقت‌ها از حالت سنتی به خشونت‌های عیانی تبدیل شده است. چه‌بسا این روزها به جز سرقت اموال مردم، سرقت انشعاب برق، لوله گاز و لوله آب نیز باب شده است. بنابراین افزایش این‌گونه جرم و جنایت‌ها یک خطر جدی برای جامعه است که مسوولان انتظامی و قضایی باید تدابیر بیشتری برای آن بیندیشند.





PALESTINIAN RESISTANCE IS JUSTIFIED WHEN OUR PEOPLE ARE OCUUPIED

مقاومت فلسطین موجه است وقتی مردممان اشغال شده اند


 چپگرا و راستگرا Leftist and rightist


فضه نوبیه خدمتگزار فاطمه زهرا دختر پیامبر اسلام بود و شهرتش به خاطر نقل روایاتی منتسب به فاطمه زهرا است. طبق بعضی از روایات او دختر یکی از پادشاهان هند (یا سودان) بود که در یکی از جنگ‌ها به اسارت درآمد و به عنوان کنیز به حبشه فرستاده شد.



مخفی کردن پنجره اصلی اکسس



advanced-installer


در رویداد بارگزاری فرم با نام لاگین می توان تابعی نوشت که از تابع ShowWondow ویندوزی  و قرار دادن مقدار صفر در آرگومان دوم آن برای مخفی کردن پنجره استفاده کند.


Private Sub Form_Load() On Error GoTo Err_Handler SetAccessWindow (SW_SHOWMINIMIZED) DoCmd.Restore Exit_Handler: Exit Sub Err_Handler: MsgBox "Error " & Err.Number & " in Form_Load procedure : " & Err.description Resume Exit_Handler End Sub

SetAccessWindow یک تابع نوشته شده توسط فرد است مثل 

SetAccessWindow(frm As Form)

که درون آن از  تابع ShowWindow  ویندوزی برای مخفی کردن پنجره چه فرم مربوطه چه خود اپلیکیشن  استفاده شده.


یک تابع که جوابش Boolean است ازکتابخانه User32 که اظهار آن در ویندوز ۶۴ بیتی با ۳۲ بیتی فرق میکند


BOOL ShowWindow( [in] HWND hWnd, [in] int nCmdShow );



*اما زمان  کلیک کردن روی TaskBar پنجره اصلی نمایان میشود


استفاده از تابع SetWindowalongPtrA و بعد استفاده از SW_HIDE برای اپلیکیشن اکسس و سپس SW_SHOW برای فرم لاگین مورد نظر 



استفاده از تابع برای تغییر Attribute پنجره مشخص شده


LONG_PTR SetWindowLongPtrA( [in] HWND hWnd, [in] int nIndex, [in] LONG_PTR dwNewLong );


nIndex :

GWL_EXSTYLE=-20

WS_EX_APPWINDOW=&H40000 


زمانیکه پنجره یا Window قابل رویت است یک پنجره top-level را داخل نوار وظیفه یا TaskBar می گنجاند.


LONG_PTR GetWindowLongPtrA( [in] HWND hWnd, [in] int nIndex );


خلاصه باید Style  را گرفت و موقتاً تغییر داد


lStyle=GetWindowLongPtrA(Login.hWnd,GWL_EXSTYLE) Or WS_EX_APPWINDOW


lStyle در آرگومان dwNewLong قرار داده می شود



می توان در پکیج نصبی از  create-desktop-shortcut استفاده کرد برای معرفی  Icon مورد نظر.  

ویژگی WindowStyle >>>  در Style ، فرضا مقدار ۱ : فعال و نمایش کردن پنجره . اگر پنجره مینیمایز یا ماکزیمایز باشد ، دستگاه آن را به سایز و موقعیت اصلی خودش باز می گرداند.



اگر خواندن متن بالا مفید واقع شد لطفا در نظرسنجی حتی خیلی کم هم شرکت نمائید 


















متد Docmd.RunCommand



انتقال کرسر به رکورد بعدی 

DoCmd.RunCommand acCmdRecordsGoToNext

acCmdCut

acCmdUndo

acCmdCopy

acCmdPase

acCmdZoom150

acCmdWindowHide

acCmdSelectReord  ' SingleForm

acCmdSelectForm

acCmdSelectReport




کاربرد مثال زیر برای به حداکثر یا به حداقل رساندن  سایز پنجره اکسس یا برگشت به وضعیت قبلی است.


Sub WinSize(strSize As String)
  Select Case strSize
    Case "Max"
      DoCmd.RunCommand acCmdAppMaximize
    Case "Min"
      DoCmd.RunCommand acCmdAppMinimize
    Case "Rest"
      DoCmd.RunCommand acCmdAppRestore
    Case Else
      MsgBox strSize & " is not a valid argument"
  End Select

End Sub


برای انتخاب آبجکت مورد نظر مثل فرم یا جدول و مخفی کردن آن اول از Docmd.SelectObject و تعریف آبجکت موردنظر و سپس از Docmd.RunCommand acCmdWindowHide استفاده میشود و برای نمایش آن آبجکت فقط از SelectObject استفاده می شود.


انتخاب و حذف رکورد :

Docmd.SetWarnings False

DoCmd.RunCommand acCmdSelectRecord
    DoCmd.RunCommand acCmdDeleteRecord

Docmd.SetWarnings True


انتقال به رکورد بعدی با : 


Docmd.GotoRecord



بستن تمام پنجره های باز   acCmdCloseAll         

بستن دیتابیسacCmdCloseDatabase  
بستن فرم جاریacCmdCloseWindow      
 کامپکت کردن دیتابیس اما نه دیتابیس باز !!!
  acCmdCompactDatabase
        acCmdFind بازکردن پنجره جستجو


استفاده از متد Docmd.Restore نیز برای برگرداندن سایز پنجره Max یا Min شده به سایز قبلی است فرضا زمانیکه پنجره اکسس را Hide می کنید با تابع API و گزارشی را مینیمایز می کنید برای برگرداندن به حالت قبلی خودش که قابل مشاهده بوده این دستور را Fire کنید.


Hide Application.hWndAccessApp : showwindow


استفاده از متد hWndAccrssApp برای تعیین هندل تخصیصی توسط ویندوز به پنجره اصلی Access که برای استفاده از تابع بالا حتما برای مقدار دهی  آرگومان hWnd از این متد استفاده بنمائید.