2012-08-31 24 views
7

प्रोग्राम बनाने के बारे में जाने का सबसे अच्छा तरीका क्या है जो समय-समय पर डेस्कटॉप वॉलपेपर को बदल देगा? मैं कार्यक्रम के चारों ओर एक जीयूआई भी बनाना चाहता हूं। मैं एक कंप्यूटर साइंस छात्र हूं, और इस तरह मैं जावा में बुनियादी प्रोग्रामिंग और दूसरों के बीच सी ++ जानता हूं। यह विंडोज 7 ओएस पर किया जाएगा।समय-समय पर डेस्कटॉप वॉलपेपर को प्रोग्रामिक रूप से बदलें

इस तरह की परियोजना के लिए उपयोग करने के लिए सबसे अच्छी भाषा क्या होगी?

आदर्श रूप से मैं परिवर्तन को ट्रिगर करने के लिए सिस्टम घड़ी का उपयोग करना चाहता हूं। क्या यह संभव है?

क्या मैं अपने सिर पर हूं?

किसी भी उत्तर की बहुत सराहना की जाएगी। धन्यवाद।

+0

इस परियोजना के लिए आपकी सावधानी बरतने का क्या परिणाम है? आपके वर्तमान सक्रिय जांच से आपको क्या पता चला है? –

+1

आप निश्चित रूप से जावा में जेएनआई कॉल के बिना ऐसा करने में सक्षम नहीं होंगे, लेकिन सी ++ शायद – axl

+0

मैंने भाषाओं की विस्तृत श्रृंखला का उपयोग करके इसी तरह की परियोजनाओं के लिए बहुत सारे समाधान देखे हैं। मैंने SystemParametersInfo में देखा है और ऐसा लगता है कि इसे शामिल किया जाना है। मैंने सिस्टम घड़ी या जीयूआई के उपयोग के संबंध में कुछ भी नहीं देखा है। –

उत्तर

9

यह एक उचित सीधा प्रोजेक्ट है, और किसी भी भाषा के साथ आसानी से किया जा सकता है जो Win32 API फ़ंक्शन (उदाहरण के लिए, C++) को कॉल कर सकता है। SPI_SETDESKWALLPAPER ध्वज के साथ वॉलपेपर बदलने के लिए गैर-स्पष्ट कार्य SystemParametersInfo है। आप इसे एक नई छवि का फ़ाइल नाम देते हैं, और वॉलपेपर बदलता है।

+1

ठीक है, यह विश्वास है कि यह एक काफी सरल परियोजना है वास्तव में सहायक है और मुझे इस परियोजना को शुरू करने का विश्वास दिलाता है। ऐसा लगता है कि मेरे सभी सवालों का जवाब दिया गया था, और अब मैं शुरू कर दूंगा। आप सबको धन्यवाद। –

+0

आपका स्वागत है। यदि आपके कोई और प्रश्न हैं, तो बेझिझक पूछें (याद रखें, स्टैक ओवरफ्लो विशिष्ट प्रश्नों के साथ सबसे अच्छा काम करता है)। –

15

जावा में:

import java.util.*; 

public class changer 
{ 
    public static native int SystemParametersInfo(int uiAction,int uiParam,String pvParam,int fWinIni); 

    static 
    { 
     System.loadLibrary("user32"); 
    } 

    public int Change(String path) 
    { 
     return SystemParametersInfo(20, 0, path, 0); 
    } 

    public static void main(String args[]) 
    { 
     String wallpaper_file = "c:\\wallpaper.jpg"; 
     changer mychanger = new changer(); 
     mychanger.Change(wallpaper_file); 
    } 

} 

Win32 सी ++ में, आप SetTimer का उपयोग एक परिवर्तन को गति प्रदान कर सकते हैं।

#define STRICT 1 
#include <windows.h> 
#include <iostream.h> 

VOID CALLBACK TimerProc(HWND hWnd, UINT nMsg, UINT nIDEvent, DWORD dwTime) 
{ 

    LPWSTR wallpaper_file = L"C:\\Wallpapers\\wallpaper.png"; 
    int return_value = SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, wallpaper_file, SPIF_UPDATEINIFILE); 


    cout << "Programmatically change the desktop wallpaper periodically: " << dwTime << '\n'; 
    cout.flush(); 
} 

int main(int argc, char *argv[], char *envp[]) 
{ 
    int Counter=0; 
    MSG Msg; 

    UINT TimerId = SetTimer(NULL, 0, 2000, &TimerProc); //2000 milliseconds 

    cout << "TimerId: " << TimerId << '\n'; 
    if (!TimerId) 
    return 16; 

    while (GetMessage(&Msg, NULL, 0, 0)) 
    { 
     ++Counter; 
     if (Msg.message == WM_TIMER) 
     cout << "Counter: " << Counter << "; timer message\n"; 
     else 
     cout << "Counter: " << Counter << "; message: " << Msg.message << '\n'; 
     DispatchMessage(&Msg); 
    } 

    KillTimer(NULL, TimerId); 
return 0; 
} 
+0

मैक ओएस एक्स में आईडी क्या लिखनी चाहिए। यह उपयोगकर्ता 32 पुस्तकालय लोड नहीं कर सकता है। – saman

संबंधित मुद्दे