8

デスクトップの壁紙を定期的に変更するプログラムを作成するための最良の方法は何ですか?また、プログラムの周りにGUIを作成したいと思います。私はコンピュータサイエンスの学生です。そのため、JavaやC++などの基本的なプログラミングを知っています。これはWindows7OSで行われます。

このようなプロジェクトに使用するのに最適な言語は何ですか?

理想的には、システムクロックを使用して変更をトリガーしたいと思います。これは可能ですか?

私は頭上にいますか?

どんな答えでも大歓迎です。ありがとうございました。

4

2 に答える 2

17

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

}

Win32 C++ では、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;
}
于 2012-08-31T09:17:08.060 に答える
9

これはかなり単純なプロジェクトであり、Win32 API関数(C ++など)を呼び出すことができる任意の言語で簡単に実行できます。壁紙を変更するための非自明な機能SystemParametersInfoSPI_SETDESKWALLPAPERフラグ付きです。新しい画像のファイル名を付けると、壁紙が変わります。

于 2012-08-31T00:53:32.690 に答える