A livello di programmazione di cambiare lo sfondo del desktop periodicamente

Qual è il modo migliore per andare sulla creazione di un programma che cambia lo sfondo del desktop periodicamente? Vorrei anche creare una GUI tutto il programma. Io sono uno studente di informatica, e come tale so di base di programmazione in Java e C++, tra gli altri. Questo sarà fatto su Windows 7 OS.

Quale sarebbe la migliore lingua da utilizzare per un progetto come questo?

Idealmente vorrei utilizzare l’orologio di sistema per innescare il cambiamento. È possibile questo?

Io sono in sopra la mia testa?

Eventuali risposte saranno molto apprezzati. Grazie.

  • Che cosa il risultato di una due diligence per questo progetto? Quali sono i tuoi attivo corrente, le indagini hanno rivelato a voi?
  • Certamente non essere in grado di farlo in java senza JNI chiamata, ma C++ forse
  • Ho visto un sacco di soluzioni per progetti simili, utilizzando una vasta gamma di lingue. Ho guardato in SystemParametersInfo e sembra che deve essere incorporato. Non ho visto nulla per quanto riguarda l’uso dell’orologio di sistema o l’uso di una GUI.
  • Windows ha la possibilità di programmare l’esecuzione di programmi in orari specifici. Solo rendere il vostro programma di cambiare la carta da parati utilizzando SystemParametersInfo e pianificare.

 

2 Replies
  1. 9

    Questo è un abbastanza semplice progetto, e può essere fatto facilmente con qualsiasi linguaggio che può chiamare le funzioni API Win32 (C++, per esempio). Non ovvia funzione di cambiare la carta da parati è SystemParametersInfo con il SPI_SETDESKWALLPAPER bandiera. Si dà il nome di un file di una nuova immagine, e lo sfondo cambia.

    • Ok, tutta la fiducia che questa è una cosa abbastanza semplice progetto è davvero utile e che mi dà la fiducia per iniziare questo progetto. Sembra che tutte le mie domande hanno risposto, e ho ora di iniziare. Grazie a tutti.
    • Sei il benvenuto. Se avete ulteriori domande, non esitate a chiedere (ricordate, Overflow dello Stack funziona meglio con domande specifiche).
  2. 17

    In Java :

    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);
        }
    
    }

    In Win32 C++, È possibile utilizzare SetTimer per innescare un cambiamento.

    #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;
    }
    • Che cosa dovrebbe id scrivere in mac os x. Non può caricare user32 biblioteca.

Lascia un commento