2013-05-20 32 views
0

創建一個按鈕,我已經收集了很多漂亮的牆紙多年來。我知道python和C++(有點MFC體驗)。 我想製作一個可以改變我的壁紙的程序。在桌面

我想要這樣操作: 有一個小圖標(半透明),如果我點擊它,它會將我的壁紙更改爲我的壁紙集合文件夾中的下一張圖片。

我發現由谷歌通過程序更改牆紙的許多相關信息。 但無法找到用於在桌面上添加按鈕的win7 API。

請一些人告訴我如何設置桌面上的一個圖標按鈕,或者它只是沒有這樣的API?

編輯: 我只是發現有辦法讓一個窗口不可移動的。所以,我認爲現在我需要找到方法來讓窗戶脫離圖標。然後它會在桌面上看起來像一個按鈕。而且,有些方法可以讓Windows在點擊(一次)時做出一些響應,對嗎?

關閉: 船長的方法可以用於人與Windows很好理解一個更好的辦法。 我知道Python,但很少有與MFC或類似框架的知識與操作系統本身有深刻的關係。這個桌面按鈕的創建對我來說很難實現。 修改基督徒的腳本和Windows快捷方式將是一個不太好看的妥協。我會這樣做。

+0

將它放在桌面上可能不是一個好主意,因爲它很容易被應用程序窗口遮擋。我建議將它放入系統托盤以方便訪問。 –

+0

我只想在系統托盤上單擊鼠標,我想我必須點擊托盤圖標才能彈出某些內容並再次單擊。所以,我希望我可以在桌面上添加一個按鈕,因爲我只是在更換牆紙,我覺得桌面上的按鈕感覺是Windows的一個很好的擴展。我經常更換壁紙。 –

回答

1

我最近寫了,節省了我的學習成績作爲我的背景

可能有幫助的是一個片段一個Python程序;

pathToBmp = "imagename or image directory" 
SPI_SETDESKWALLPAPER = 20 
ctypes.windll.user32.SystemParametersInfoA(SPI_SETDESKWALLPAPER, 0, pathToBmp , 
             0) 

這將改變你的桌面BG到任何文件名,你卻在pathToBmp

我敢肯定,你可以計算休息了很容易

,而是一個按鈕也許是爲了運行切換的BG到下一個PIC

我不知道Python程序的快捷方式,如果這就是你要找的只是一些指針和想法:)

編輯: 也許這將有助於你

Windows 7 Gadget Tutorial
Windows Sidebar Object Reference

+0

感謝Christian,你的方法很好。但我真正想要的是在桌面上添加按鈕的方式(或Windows API)。但是如果我不知道如何去做,那麼你的建議將是一個很好的方法。 –

+0

我剛剛搜索了一些東西,這是Windows的快捷方式,使用快捷方式來運行您的Python腳本將很容易。但它看起來不太好,它也不是一個按鈕。 –

+0

這是真的,但你想要在桌面上的按鈕或像其他地方? – Serial

1

AFAIK有一個按鈕添加到桌面,而不通過大量的箍跳躍沒有直接的方法。您可以創建一個子控件並將父窗口設置爲桌面,但不會收到按鈕單擊通知。這是因爲它們只被發送到控件的父窗口。在桌面上出現的最接近和最簡單的解決方案是,通過調用SetWindowPos()來創建它,並將它的z順序設置爲最低。您的應用程序仍然能夠接收按鈕通知消息,但控件始終顯示在所有其他窗口的後面。儘管桌面可以最小化所有窗口,但您可能需要覆蓋最小化和最大化消息的行爲。

您還可以選擇在系統托盤上添加一個圖標Shell_NotifyIcon。只要您點擊圖標,系統托盤就會將消息發送到您指定的窗口。下面的小例子展示瞭如何將圖標添加到系統托盤。

static const UINT WM_TRAYMESSAGE = WM_USER + 1000; 
static const UINT IDC_TRAYICON = 100l; 

NOTIFYICONDATA nid; 

//Tray Class Stuff 
nid.cbSize = sizeof(NOTIFYICONDATA); 
nid.hWnd = hwnd; // Window to receive notifications 
nid.uID = 100; // Id sent to window on button clicks 
nid.uFlags = NIF_ICON|NIF_MESSAGE; 
nid.hIcon = LoadIcon(hInstance, IDC_TRAYICON); 
nid.uCallbackMessage = WM_TRAYMESSAGE; // notification to send to window 

// Add the tray icon 
Shell_NotifyIcon(NIM_ADD, &nid); 

每當用戶點擊該圖標您指定的窗口就會收到WM_TRAYMESSAGE消息。 uID和其他信息的值也作爲參數傳遞給窗口,允許您識別哪個圖標被點擊(如果添加了多個圖標)。

+0

謝謝船長。但我想將按鈕放在桌面上,以便可能需要少一點點擊才能執行操作 –

+0

您確實知道可以將系統托盤配置爲始終顯示圖標?這減少了用於單擊的步驟。 –

+0

我不太清楚如何在系統托盤上操作。但我想要桌面上的圖標,因爲它感覺很自然,'用於改變桌面圖標的桌面上的按鈕',我突然間着火以實現這一點。 –