K
so, ich habe eine Lösung gefunden. Und zwar binde ich die coredll.dll ein. Über diese wird SystemParameterInfo eingebunden, mit dieser Funktion kann man dann die WorkArea ändern. Leider erwartet die Funktion einen PVOID mit einem Zeiger auf eine RECT-Struktur als Übergabewert. Wie erzeuge ich diesen zeiger. Hier mein bisheriger Code, das einbinden der MessageBox-Funktion dient nur testzweken, funktioniert aber:
using System;
using System.Runtime.InteropServices;
using System.Drawing;
class Test
{
[DllImport("user32.dll")]
public static extern int MessageBoxA(int h, string m,
string c, int type);
[DllImport("coredll.dll")]
public static extern bool SystemParametersInfoA(int uiAction,
int uiParam, int pvParam, int fWinIni);
public static int SPI_SETWORKAREA=47;
public static void Main(string[] args)
{
string bef=args[0].ToUpper();
if(bef.Equals("MESSAGEBOX")){
int retval = MessageBoxA(0, args[1], args[2], 0);
}else if(bef.Equals("WORKINGAREA")){
int param1=Convert.ToInt32(args[1]); //uiParam
int rectx=Convert.ToInt32(args[2]);
int recty=Convert.ToInt32(args[3]);
int rectwidth=Convert.ToInt32(args[4]);
int rectheight=Convert.ToInt32(args[5]);
Rectangle r=new Rectangle(rectx, recty, rectwidth, rectheight);
int param2=Convert.ToInt32(r);
int fwinini=Convert.ToInt32(args[6]);
SystemParametersInfoA(SPI_SETWORKAREA, param1, param2, fwinini);
}
}
}