Я пытаюсь установить обои в Windows 7 с помощью Java. Я пробовал использовать код из ответов here и here. Он отлично работает в Windows 8 и 10, но не в 7. Нет ошибок, он просто ничего не делает. Я пробовал устанавливать разные обои 1920x1080 (это разрешение, установленное на панели управления) и различные форматы файлов (png, jpg, bmp) и запуск программы на нескольких разных компьютерах. Код, который у меня есть после строки, которая должна установить обои, работает нормально. Я использую JNA версии 4.2.0 и Java 8 update 60.Установка обоев в Windows с использованием Java
Есть ли способ установить обои в Windows 7 с помощью Java?
EDIT:
Вот мой код:
import java.util.HashMap;
import com.sun.jna.Native;
import com.sun.jna.platform.win32.WinDef.UINT_PTR;
import com.sun.jna.win32.StdCallLibrary;
import com.sun.jna.win32.W32APIFunctionMapper;
import com.sun.jna.win32.W32APITypeMapper;
public class WallpaperChanger {
public interface SPI extends StdCallLibrary {
long SPI_SETDESKWALLPAPER = 20;
long SPIF_UPDATEINIFILE = 0x01;
long SPIF_SENDWININICHANGE = 0x02;
@SuppressWarnings("serial")
SPI INSTANCE = (SPI) Native.loadLibrary("user32", SPI.class,
new HashMap<Object, Object>() {
{
put(OPTION_TYPE_MAPPER, W32APITypeMapper.UNICODE);
put(OPTION_FUNCTION_MAPPER,
W32APIFunctionMapper.UNICODE);
}
});
boolean SystemParametersInfo(UINT_PTR uiAction, UINT_PTR uiParam,
String pvParam, UINT_PTR fWinIni);
}
public static void main(String[] args) {
System.out.println("changing");
String filename = "C:\\wallpapers\\wallpaper.jpg";
SPI.INSTANCE.SystemParametersInfo(
new UINT_PTR(SPI.SPI_SETDESKWALLPAPER), new UINT_PTR(0),
filename, new UINT_PTR(SPI.SPIF_UPDATEINIFILE
| SPI.SPIF_SENDWININICHANGE));
System.out.println("changed");
}
}
Под «не работает», я имею в виду, что код работает, но обои не меняется.
Вы должны разместить здесь код, на котором у вас есть вопрос, и, если хотите, более конкретно, чем «он не работает». – hotzst
@hotzst Извините, я знал, что что-то забыл – marti201
Проверьте возвращаемое значение и Native.getLastError(). Windows вполне может сказать вам, что не так. – technomage