Hier mal ein lauffähiges stück Code das Dir einen teil Deines Desktops anzeigt.
Hab da einiges gekürzt damit es nicht zu gross und besser überschaubar ist.
Code: Alles auswählen
#LGLCD_INVALID_CONNECTION = -1
#LGLCD_INVALID_DEVICE = -1
#LGLCDBUTTON_LEFT = $00000100
#LGLCDBUTTON_RIGHT = $00000200
#LGLCDBUTTON_OK = $00000400
#LGLCDBUTTON_CANCEL = $00000800
#LGLCDBUTTON_UP = $00001000
#LGLCDBUTTON_DOWN = $00002000
#LGLCDBUTTON_MENU = $00004000
#LGLCDBUTTON_BUTTON0 = $00000001
#LGLCDBUTTON_BUTTON1 = $00000002
#LGLCDBUTTON_BUTTON2 = $00000004
#LGLCDBUTTON_BUTTON3 = $00000008
#LGLCDBUTTON_BUTTON4 = $00000010
#LGLCDBUTTON_BUTTON5 = $00000020
#LGLCDBUTTON_BUTTON6 = $00000040
#LGLCDBUTTON_BUTTON7 = $00000080
#LGLCD_AUDIO_WHEEL_UP = $00001000
#LGLCD_AUDIO_WHEEL_DOWN = $00001010
#LGLCD_AUDIO_SKIP_LAST = $00001020
#LGLCD_AUDIO_SKIP_NEXT = $00001040
#LGLCD_AUDIO_STOP = $00001080
#LGLCD_AUDIO_PLAY = $00001100
#LGLCD_AUDIO_MUTE = $00001200
Structure lgLcdDeviceDesc
Width.l
Height.l
Bpp.l
NumSoftButtons.l
EndStructure
Structure lgLcdDeviceDescEx
deviceFamilyId.l
deviceDisplayName.c[#MAX_PATH]
Width.l
Height.l
Bpp.l
NumSoftButtons.l
Reserved1.l
Reserved2.l
EndStructure
#LGLCD_BMP_FORMAT_160x43x1 = $00000001
#LGLCD_BMP_FORMAT_QVGAx32 = $00000003
#LGLCD_BMP_WIDTH = 160
#LGLCD_BMP_HEIGHT = 43
#LGLCD_BMP_BPP = 1
#LGLCD_BW_BMP_WIDTH = 160
#LGLCD_BW_BMP_HEIGHT = 43
#LGLCD_BW_BMP_BPP = 1
#LGLCD_QVGA_BMP_WIDTH = 320
#LGLCD_QVGA_BMP_HEIGHT = 240
#LGLCD_QVGA_BMP_BPP = 4
Structure lgLcdBitmapHeader
Format.l
EndStructure
Structure lgLcdBitmap160x43x1
hdr.lgLcdBitmapHeader
pixels.b[#LGLCD_BMP_WIDTH * #LGLCD_BMP_HEIGHT * #LGLCD_BMP_BPP]
EndStructure
Structure lgLcdBitmapQVGAx32
hdr.lgLcdBitmapHeader
pixels.b[#LGLCD_QVGA_BMP_WIDTH * #LGLCD_QVGA_BMP_HEIGHT * #LGLCD_QVGA_BMP_BPP]
EndStructure
#LGLCD_PRIORITY_IDLE_NO_SHOW = 0
#LGLCD_PRIORITY_BACKGROUND = 64
#LGLCD_PRIORITY_NORMAL = 128
#LGLCD_PRIORITY_ALERT = 255
#LGLCD_LCD_FOREGROUND_APP_NO = 0
#LGLCD_LCD_FOREGROUND_APP_YES = 1
#LGLCD_DEVICE_FAMILY_BW_160x43_GAMING = $00000001
#LGLCD_DEVICE_FAMILY_KEYBOARD_G15 = $00000001
#LGLCD_DEVICE_FAMILY_BW_160x43_AUDIO = $00000002
#LGLCD_DEVICE_FAMILY_SPEAKERS_Z10 = $00000002
#LGLCD_DEVICE_FAMILY_JACKBOX = $00000004
#LGLCD_DEVICE_FAMILY_BW_160x43_BASIC = $00000008
#LGLCD_DEVICE_FAMILY_LCDEMULATOR_G15 = $00000008
#LGLCD_DEVICE_FAMILY_RAINBOW = $00000010
#LGLCD_DEVICE_FAMILY_QVGA_BASIC = $00000020
#LGLCD_DEVICE_FAMILY_QVGA_GAMING = $00000040
#LGLCD_DEVICE_FAMILY_GAMEBOARD_G13 = $00000080
#LGLCD_DEVICE_FAMILY_OTHER = $80000000
#LGLCD_DEVICE_FAMILY_ALL_BW_160x43 = #LGLCD_DEVICE_FAMILY_BW_160x43_GAMING| #LGLCD_DEVICE_FAMILY_BW_160x43_AUDIO| #LGLCD_DEVICE_FAMILY_JACKBOX| #LGLCD_DEVICE_FAMILY_BW_160x43_BASIC| #LGLCD_DEVICE_FAMILY_RAINBOW| #LGLCD_DEVICE_FAMILY_GAMEBOARD_G13
#LGLCD_DEVICE_FAMILY_ALL_QVGA = #LGLCD_DEVICE_FAMILY_QVGA_BASIC| #LGLCD_DEVICE_FAMILY_QVGA_GAMING
#LGLCD_DEVICE_FAMILY_ALL = #LGLCD_DEVICE_FAMILY_ALL_BW_160x43| #LGLCD_DEVICE_FAMILY_ALL_QVGA
#LGLCD_APPLET_CAP_BASIC = $00000000
#LGLCD_APPLET_CAP_BW = $00000001
#LGLCD_APPLET_CAP_QVGA = $00000002
#LGLCD_NOTIFICATION_DEVICE_ARRIVAL = $00000001
#LGLCD_NOTIFICATION_DEVICE_REMOVAL = $00000002
#LGLCD_NOTIFICATION_CLOSE_CONNECTION = $00000003
#LGLCD_NOTIFICATION_APPLET_DISABLED = $00000004
#LGLCD_NOTIFICATION_APPLET_ENABLED = $00000005
#LGLCD_NOTIFICATION_TERMINATE_APPLET = $00000006
#LGLCD_DEVICE_BW = $00000001
#LGLCD_DEVICE_QVGA = $00000002
Prototype.l lgLcdOnConfigureCB(Connection.l, *pContext.l)
Prototype.l lgLcdOnNotificationCB(Connection.l, notificationCode.l, notifyParm1.l, notifyParm2.l, notifyParm3.l, notifyParm4.l)
Prototype.l lgLcdOnSoftButtonsCB(device.l, dwButtons.l, *pContext.l)
Structure lgLcdConfigureContext
configCallback.lgLcdOnConfigureCB
configContext.l
EndStructure
Structure lgLcdNotificationContext
notificationCallback.lgLcdOnNotificationCB
notificationContext.l
EndStructure
Structure lgLcdConnectContext
*appFriendlyName.l
isPersistent.l
isAutostartable.l
onConfigure.lgLcdConfigureContext
connection.l
EndStructure
Structure lgLcdConnectContextEx
*appFriendlyName.l
isPersistent.l
isAutostartable.l
onConfigure.lgLcdConfigureContext
connection.l
dwAppletCapabilitiesSupported.l
dwReserved1.l
onNotify.lgLcdNotificationContext
EndStructure
Structure lgLcdSoftbuttonsChangedContext
softbuttonsChangedCallback.lgLcdOnSoftButtonsCB
softbuttonsChangedContext.l
EndStructure
Structure lgLcdOpenContext
connection.l
index.l
onSoftbuttonsChanged.lgLcdSoftbuttonsChangedContext
device.l
EndStructure
Structure lgLcdOpenByTypeContext
connection.l
deviceType.l
onSoftbuttonsChanged.lgLcdSoftbuttonsChangedContext
device.l
EndStructure
Import "lglcd.lib"
g_lgLcdLibIsInitialized() AS "_g_lgLcdLibIsInitialized"
g_lgLcdLibLinkedRemoteInterface.l() AS "_g_lgLcdLibLinkedRemoteInterface"
lgLcdClose(device.l) AS "_lgLcdClose@4"
CompilerIf #PB_Compiler_Unicode
lgLcdConnect(*ctx.lgLcdConnectContext) AS "_lgLcdConnectW@4"
lgLcdConnectEx(*ctx.lgLcdConnectContextEx) AS "_lgLcdConnectExW@4"
lgLcdEnumerateEx(connection.l, index.l, *description.lgLcdDeviceDescEx) AS "_lgLcdEnumerateExW@12"
CompilerElse
lgLcdConnect(*ctx.lgLcdConnectContext) AS "_lgLcdConnectA@4"
lgLcdConnectEx(*ctx.lgLcdConnectContextEx) AS "_lgLcdConnectExA@4"
lgLcdEnumerateEx(connection.l, index.l, *description.lgLcdDeviceDescEx) AS "_lgLcdEnumerateExA@12"
CompilerEndIf
lgLcdDeInit() AS "_lgLcdDeInit@0"
lgLcdDisconnect(connection.l) AS "_lgLcdDisconnect@4"
lgLcdEnumerate(connection.l, index.l, *description.lgLcdDeviceDesc) AS "_lgLcdEnumerate@12"
lgLcdInit() AS "_lgLcdInit@0"
lgLcdOpen(*ctx.lgLcdOpenContext) AS "_lgLcdOpen@4"
lgLcdOpenByType(*ctx.lgLcdOpenByTypeContext) AS "_lgLcdOpenByType@4"
lgLcdReadSoftButtons(device.l, *buttons.l) AS "_lgLcdReadSoftButtons@8"
lgLcdSetAsLCDForegroundApp(device.l, foregroundYesNoFlag.l) AS "_lgLcdSetAsLCDForegroundApp@8"
lgLcdSetDeviceFamiliesToUse(connection.l,dwDeviceFamiliesSupported.l,dwReserved1.l) AS "_lgLcdSetDeviceFamiliesToUse@12"
lgLcdUpdateBitmap(device.l, *bitmap.lgLcdBitmapHeader, priority.l) AS "_lgLcdUpdateBitmap@12"
EndImport
Procedure.l LGLCD_SYNC_UPDATE(priority.l)
ProcedureReturn ($80000000 | priority)
EndProcedure
Procedure.l LGLCD_ASYNC_UPDATE(priority.l)
ProcedureReturn priority
EndProcedure
Procedure.l LGLCD_SYNC_COMPLETE_WITHIN_FRAME(priority.l)
ProcedureReturn ($C0000000 | priority)
EndProcedure
Structure KBDLLHOOKSTRUCT
vkCode.l
scanCode.l
flags.l
time.l
dwExtraInfo.l
EndStructure
Global connectContext.lgLcdConnectContext
Global openContext.lgLcdOpenByTypeContext ;
Global *bmp.lgLcdBitmapQVGAx32 =AllocateMemory(SizeOf(lgLcdBitmapQVGAx32))
Procedure.l lgLcdOnSoftButtonsCB(device.l, dwButtons.l, pContext.l)
select dwButtons
case #LGLCDBUTTON_BUTTON0
debug "Button0";links
case #LGLCDBUTTON_BUTTON1
debug "Button1";rechts
case #LGLCDBUTTON_BUTTON2
debug "Button2";hoch
case #LGLCDBUTTON_BUTTON3
debug "Button3";runter
case #LGLCD_AUDIO_SKIP_LAST
debug "Button_SKIP_LAST"
case #LGLCD_AUDIO_SKIP_NEXT
debug "Button_SKIP_NEXT"
case #LGLCD_AUDIO_STOP
debug "Button_STOP"
case #LGLCD_AUDIO_PLAY
debug "Button_PLAY"
EndSelect
EndProcedure
Procedure.l G15_KeyboardHook(nCode.l, wParam.l, *p.KBDLLHOOKSTRUCT)
If nCode = #HC_ACTION And wParam = #WM_KEYDOWN
Select *p\vkCode
Case 173
lgLcdOnSoftButtonsCB(openContext\device,#LGLCD_AUDIO_MUTE, openContext\onSoftbuttonsChanged\softbuttonsChangedContext)
Case 174
lgLcdOnSoftButtonsCB(openContext\device,#LGLCD_AUDIO_WHEEL_DOWN, openContext\onSoftbuttonsChanged\softbuttonsChangedContext)
Case 175
lgLcdOnSoftButtonsCB(openContext\device,#LGLCD_AUDIO_WHEEL_UP, openContext\onSoftbuttonsChanged\softbuttonsChangedContext)
Case 176
lgLcdOnSoftButtonsCB(openContext\device,#LGLCD_AUDIO_SKIP_NEXT, openContext\onSoftbuttonsChanged\softbuttonsChangedContext)
Case 177
lgLcdOnSoftButtonsCB(openContext\device,#LGLCD_AUDIO_SKIP_LAST, openContext\onSoftbuttonsChanged\softbuttonsChangedContext)
Case 178
lgLcdOnSoftButtonsCB(openContext\device,#LGLCD_AUDIO_STOP, openContext\onSoftbuttonsChanged\softbuttonsChangedContext)
Case 179
lgLcdOnSoftButtonsCB(openContext\device,#LGLCD_AUDIO_PLAY, openContext\onSoftbuttonsChanged\softbuttonsChangedContext)
EndSelect
EndIf
ProcedureReturn CallNextHookEx_(0, nCode, wParam, *p)
EndProcedure
Macro image2lcd(dc,Image)
Define TemporaryBitmap.BITMAP, TemporaryBitmapInfo.BITMAPINFO
hBmp = ImageID(Image)
GetObject_(hBmp, SizeOf(BITMAP), TemporaryBitmap.BITMAP)
TemporaryBitmapInfo\bmiHeader\biSize = SizeOf(BITMAPINFOHEADER)
TemporaryBitmapInfo\bmiHeader\biWidth = TemporaryBitmap\bmWidth
TemporaryBitmapInfo\bmiHeader\biHeight = -TemporaryBitmap\bmHeight
TemporaryBitmapInfo\bmiHeader\biPlanes = 1
TemporaryBitmapInfo\bmiHeader\biBitCount = 32
TemporaryBitmapInfo\bmiHeader\biCompression = #BI_RGB
GetDIBits_(DC, hBmp, 0, TemporaryBitmap\bmHeight, @*bmp\pixels, TemporaryBitmapInfo, #DIB_RGB_COLORS)
lgLcdUpdateBitmap(openContext\device, @*bmp\hdr, LGLCD_ASYNC_UPDATE(#LGLCD_PRIORITY_NORMAL))
EndMacro
Procedure MakeDesktopSCREENSHOT()
Shared dkx,dky,tdesk,desk,info,fix,quality.l,hCursor.l,piconinfo.ICONINFO
static xm.d,ym.d,dmx.l,dmy.l,dkwx.l,dkwy.l
dmx=DesktopMouseX()
dmy=DesktopMouseY()
desk=0
dkx=DesktopWidth(desk)
dky=DesktopHeight(desk)
Width=xzoom:Height=yzoom
bltImage=CreateImage(#PB_Any,320, 240,32)
hImage = CreateImage(#PB_Any,320, 240,32)
ImageDC = StartDrawing(ImageOutput(bltImage))
DeskDC =CreateDC_("DISPLAY", 0, 0, 0)
ImageDC2 =CreateCompatibleDC_(ImageDC)
SelectObject_(ImageDC2, ImageID(hImage))
BitBlt_(ImageDC2,0,0,320,240,DeskDC,dmx-160,dmy-120,#SRCCOPY)
DrawIcon_(ImageDC2, 160-piconinfo\xHotspot,120-piconinfo\yHotspot,hCursor )
StretchBlt_(ImageDC,0,0,320,240,ImageDC2,0,0,320,240,#SRCCOPY );
DeleteDC_ (ImageDC2)
image2lcd(ImageDC,bltImage)
StopDrawing()
DeleteDC_(DeskDC)
FreeImage(hImage)
FreeImage(bltImage)
EndProcedure
If Not lgLcdInit()
ZeroMemory_(@connectContext, SizeOf(connectContext))
connectContext\appFriendlyName = @"Zoom"
connectContext\isAutostartable = #True
connectContext\isPersistent = #True
connectContext\onConfigure\configCallback = #NULL
connectContext\onConfigure\configContext = #Null
connectContext\connection = #LGLCD_INVALID_CONNECTION
If Not lgLcdConnect(connectContext)
ZeroMemory_(@openContext, SizeOf(openContext));
openContext\connection = connectContext\connection;
openContext\deviceType = #LGLCD_DEVICE_QVGA;
openContext\onSoftbuttonsChanged\softbuttonsChangedCallback = @lgLcdOnSoftButtonsCB()
global openContext\onSoftbuttonsChanged\softbuttonsChangedContext
global openContext\device = #LGLCD_INVALID_DEVICE;
If Not lgLcdOpenByType(openContext);
*bmp\hdr\Format = #LGLCD_BMP_FORMAT_QVGAx32;
ZeroMemory_(@*bmp\pixels, SizeOf(*bmp\pixels))
; ab hier kannst du mit deinem eigenen code beginnen
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
desk=ExamineDesktops()-1
CreatePopupMenu(0)
MenuBar()
MenuItem(3, "Ende")
MenuBar()
fps=60 ; Framerate festlegen
Window_0=OpenWindow(#PB_Any, 0, 0, 160, 30, "Zoom", #PB_Window_SystemMenu|#PB_Window_MinimizeGadget)
ShowWindow_(WindowID(Window_0),#SW_HIDE)
SetWindowsHookEx_(#WH_KEYBOARD_LL, @G15_KeyboardHook(), GetModuleHandle_(0), #Null)
AddSysTrayIcon(1, WindowID(Window_0), CatchImage(10, ?Screenshoticon))
SysTrayIconToolTip(1, "G19 Desktop Viewer,use the Softbuttons")
hCursor=LoadCursor_(0,#IDC_ARROW )
GetIconInfo_(hCursor,@piconinfo.ICONINFO)
SetTimer_(WindowID(Window_0),1,1000/fps,@MakeDesktopSCREENSHOT())
Quit=0
Repeat
EventID = waitWindowEvent(500)
If EventID = #PB_Event_SysTray
Select EventType()
Case #PB_EventType_RightClick,#PB_EventType_LeftClick
DisplayPopupMenu(0, WindowID(Window_0))
EndSelect
EndIf
If EventID = #PB_Event_Menu
Select EventMenu()
Case 3 ; Quit
KillTimer_(WindowID(Window_0),1)
Quit=1
EndSelect
EndIf
Until Quit=1
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
; und hier endet dein code
EndIf
EndIf
EndIf
DataSection
Screenshoticon:
IncludeBinary "player.ico"
EndDataSection