Hallo...
Kurz und knapp:
Ich moechte - vollkommen win-vistaabhaengig, also mit den Win32-Libs fuer Python - folgendes Erscheinungsbild realisieren:
Weiß da jemand, ob das moeglich ist?
[solved] Aero Glass mit Win32Libs und der dwmapi.dll
- nkoehring
- User
- Beiträge: 543
- Registriert: Mittwoch 7. Februar 2007, 17:37
- Wohnort: naehe Halle/Saale
- Kontaktdaten:
Zuletzt geändert von nkoehring am Dienstag 11. Dezember 2007, 17:09, insgesamt 1-mal geändert.
[url=http://www.python-forum.de/post-86552.html]~ Wahnsinn ist auch nur eine andere Form der Intelligenz ~[/url]
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
- veers
- User
- Beiträge: 1219
- Registriert: Mittwoch 28. Februar 2007, 20:01
- Wohnort: Zürich (CH)
- Kontaktdaten:
Hm, vollkommen Vista unabhängig - Gtk + X11 mit Compiz - könnte ich dir wohl eine Lösung anbieten. Da habe ich mal so etwas gebastelt.
[url=http://29a.ch/]My Website - 29a.ch[/url]
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
- nkoehring
- User
- Beiträge: 543
- Registriert: Mittwoch 7. Februar 2007, 17:37
- Wohnort: naehe Halle/Saale
- Kontaktdaten:
Hi Veers...
also allein aus Interesse wuerde ich mir diese Loesung schon gern mal anschauen
also allein aus Interesse wuerde ich mir diese Loesung schon gern mal anschauen
[url=http://www.python-forum.de/post-86552.html]~ Wahnsinn ist auch nur eine andere Form der Intelligenz ~[/url]
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
- nkoehring
- User
- Beiträge: 543
- Registriert: Mittwoch 7. Februar 2007, 17:37
- Wohnort: naehe Halle/Saale
- Kontaktdaten:
hab aus einem Beispiel heraus mal den Versuch gestartet die DWMAPI auf ein WindowsFenster anzusetzen... irgendwie funktioniert es leider nicht.
Hier erstmal n bissl Code:
...das ganze erzeugt zwar ein Fenster, aber der Bereich den ich angebe wird einfach nur weiß und nicht mit dem transparent/unscharf-Effekt belegt.
Hat wer ne Idee oder vielleicht ein besseres Beispiel wie man sowas macht - aber bitte nicht in C# - in dem moeglichst ohne Boardmittel der Sprache solche Fenster erzeugt werden, so dass ich es in Python nachbauen kann?
Hier erstmal n bissl Code:
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: iso-8859-15 -*-
import win32gui
import win32con
import win32api
import ctypes
import struct
class win32Window(object):
def __init__(self):
self.g_registeredClass = 0
win32gui.InitCommonControls()
self.message_map = {}
self.hinst = win32api.GetModuleHandle(None)
def _RegisterWndClass(self):
className = "testApp"
if not self.g_registeredClass:
wc = win32gui.WNDCLASS()
wc.SetDialogProc() # Make it a dialog class.
self.hinst = wc.hInstance = win32api.GetModuleHandle(None)
wc.lpszClassName = className
wc.style = win32con.CS_VREDRAW | win32con.CS_HREDRAW
wc.hCursor = win32gui.LoadCursor( 0, win32con.IDC_ARROW )
wc.hbrBackground = win32con.COLOR_WINDOW + 1
wc.lpfnWndProc = self.message_map # could also specify a wndproc.
# C code: wc.cbWndExtra = DLGWINDOWEXTRA + sizeof(HBRUSH) + (sizeof(COLORREF));
wc.cbWndExtra = win32con.DLGWINDOWEXTRA + struct.calcsize("Pi")
icon_flags = win32con.LR_LOADFROMFILE | win32con.LR_DEFAULTSIZE
try:
wc.hIcon = win32gui.LoadImage(self.hinst,
g_iconPathName,
win32con.IMAGE_ICON,
0,
0,
icon_flags
)
except:
print "cannot find icon... using standard icon"
wc.hIcon = win32gui.LoadIcon(0, win32con.IDI_APPLICATION)
classAtom = win32gui.RegisterClass(wc)
self.g_registeredClass = 1
return className
def _GetDialogTemplate(self, dlgClassName):
style = win32con.WS_THICKFRAME | \
win32con.WS_POPUP | \
win32con.WS_VISIBLE | \
win32con.WS_CAPTION | \
win32con.WS_SYSMENU | \
win32con.DS_SETFONT | \
win32con.WS_MINIMIZEBOX
cs = win32con.WS_CHILD | win32con.WS_VISIBLE
title = "TestWindow"
dlg = [ [title, (20, 20, 210, 250), style, None, (8, "MS Sans Serif"), None, dlgClassName], ]
#self.hinst = win32api.GetModuleHandle(None)
#win32gui.CreateDialogIndirect(hinst, dlg, 0, self.message_map)
return dlg
def DoModal(self):
message_map = {
win32con.WM_SIZE: self.OnSize,
win32con.WM_INITDIALOG: self.OnInitDialog,
win32con.WM_CLOSE: self.OnClose,
win32con.WM_DESTROY: self.OnDestroy,
}
dlgClassName = self._RegisterWndClass()
template = self._GetDialogTemplate(dlgClassName)
return win32gui.DialogBoxIndirect(self.hinst, template, 0, message_map)
def OnInitDialog(self, hwnd, msg, wparam, lparam):
self.hwnd = hwnd
# trying to usw dwmapi.dll to draw a glass client area
margins = struct.pack("@iiii", 20, 20, 100, 20)
dwmapi = ctypes.windll.LoadLibrary("dwmapi")
dwmapi.DwmExtendFrameIntoClientArea(hwnd, margins)
def OnClose(self, hwnd, msg, wparam, lparam):
win32gui.EndDialog(hwnd, 0)
def OnDestroy(self, hwnd, msg, wparam, lparam):
print "Window destroyed..."
win32gui.PostQuitMessage(0) # Terminate the app.
def OnSize(self, hwnd, msg, wparam, lparam):
x = win32api.LOWORD(lparam)
y = win32api.HIWORD(lparam)
return 1
if __name__ == '__main__':
win = win32Window()
win.DoModal()
Hat wer ne Idee oder vielleicht ein besseres Beispiel wie man sowas macht - aber bitte nicht in C# - in dem moeglichst ohne Boardmittel der Sprache solche Fenster erzeugt werden, so dass ich es in Python nachbauen kann?
[url=http://www.python-forum.de/post-86552.html]~ Wahnsinn ist auch nur eine andere Form der Intelligenz ~[/url]
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
- nkoehring
- User
- Beiträge: 543
- Registriert: Mittwoch 7. Februar 2007, 17:37
- Wohnort: naehe Halle/Saale
- Kontaktdaten:
AH ES GEHT!!!
Hehe... hab doch noch ein Beispiel gefunden in dem es fuer C++ erklaert wurde. Es fehlte eine simple Funktion fuer win32con.WM_ERASEBKGND.
Eigentlich soll man darin Transparenz auf den DC zeichnen... aber es geht auch mit einem einfachen Return 1 ^^
Hehe... hab doch noch ein Beispiel gefunden in dem es fuer C++ erklaert wurde. Es fehlte eine simple Funktion fuer win32con.WM_ERASEBKGND.
Eigentlich soll man darin Transparenz auf den DC zeichnen... aber es geht auch mit einem einfachen Return 1 ^^
[url=http://www.python-forum.de/post-86552.html]~ Wahnsinn ist auch nur eine andere Form der Intelligenz ~[/url]
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2