יום שני, 11 באוקטובר 2010

העלמת אייקונים משולחן העבודה - #C


בעבר הרחוק מצאתי (nאוד נוח) אפליקציה קטנה שבמקרה שהעכבר לא נמצא מעל שולחן העבודה מעלימה את כל האייקונים, ומחזירה אותם כאשר העכבר חוזר להיות מעל שולחן העבודה.
http://www.donationcoder.com/Software/Skrommel/index.html#HideDesktop

לאחר שוטטות קצרה בפורומים של MSDN מצאתי שהעלמת/החזרת האייקונים יכולה להיעשות בשפת #C (או ב-NET. בכלל) בעזרת שימוש ב-DLL של מערכת ההפעלה.
ראשית יש להשתמש בספרייה:
using System.Runtime.InteropServices;
ולהוסיף את הקוד -
[DllImport("user32.dll")]
    static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
[DllImport("user32.dll", SetLastError = true)]
     static extern IntPtr FindWindowEx(IntPtr hwndParent,
     IntPtr hwndChildAfter, string lpszClass, string lpszWindow);

private void checkBox1_CheckedChanged
                                                      (object sender, EventArgs e)
{
    IntPtr hWnd = FindWindowEx(IntPtr.Zero, IntPtr.Zero, 
                                                                       "Progman", null);

    if (checkBox1.Checked)
        ShowWindow(hWnd, 0);
    else
        ShowWindow(hWnd, 5);
}
כפי שאפשר לראות הקוד מיושם ע"י  תיבת סימון (CheckBox).
אפשר לשנות את האפשרות מתיבת סימון ללחצן, או כל פקד אחר,
או להגדיר טיימר עבור כמות הזמן שהעכבר נמצא מעל שולחן העבודה למשל, וכו'.

שימו לב - הקוד לא עובד ב-Win7.
זאת היא עוד אחת מהסיבות שאני מצטער ששדרגתי את vista, אבל אני מקווה שאחד מהאנשים של מיקרוסופט (שראיתי בפורום) יחזור אלי עם תשובה, או שאחפש עוד קצת ואמצא איך.

עם זאת, ידוע שהאפשרות קיימת ידנית ע"י תפריט-לחצן-ימני על שולחן העבודה, אבל אני רוצה שהפעולה תהיה אוטומטית, ובכך להחליף את התוכנה של skrommel
http://www.donationcoder.com/Software/Skrommel/index.html#HideDesktop



תגובה 1: