Zum Inhalt springen

über vb.net auf Task-Bar windows zugreifen


Empfohlene Beiträge

Geschrieben

Hallo allerseits,

ich habe folgendes Problem. Ich muss immer wieder mit zig Instanzen einer Anwendung arbeiten, die nicht ersetzt werden kann und mir die Taskbar zumüllt so daß ich ewig nach dem richtigen Fenster suchen muss. Also habe ich mir quasi eine eigene Taskbar gebaut, die diese Instanzen aufnimmt und aus der heraus ich die Fenster steuern kann (in den Vordergrund, Maximieren, Minimieren) usw. - Nun fehlt natürlich das Sahnehäubchen. Diese Taskbar-Buttons müssen aus der Windows Taskbar raus - und daran scheitere ich.

Ich kann zwar den Start-Button der Windows Taskbar ein- und Ausblenden und den Rest ebenfalls aber ich komme nicht an die Programmfenster.

Hier mal ein Link, zu einem Tool, daß das kann.

CodeProject: A tool to order the window buttons in your taskbar. Free source code and programming help

Dummerweise scheitere ich daran, die seltsamen fixed -Blöcke in VB.Net nachzubauen.

Hier die wichtigen Abschnitte aus der Source:

_ToolbarWindowHandle = GetToolbarWindowHandle();

if ( _ToolbarWindowHandle == IntPtr.Zero ) return;

_Glomming = ( Glob.Glomming.Int != 0 );

UInt32 count = User32.SendMessage( _ToolbarWindowHandle, TB.BUTTONCOUNT, 0, 0 );

soweit bekomme ich das in vb auch hin. Handle habe ich, und auch die anzahl der in der Taskleiste befindlichen 'Buttons' bekomme ich korrekt zurück.

Nun der Haken:

fixed ( TBBUTTON* pTBButton = & tbButton )

{

IntPtr ipTBButton = new IntPtr( pTBButton );

int b = ( int ) User32.SendMessage( hToolbar, TB.GETBUTTON, ( IntPtr ) i, ipRemoteBuffer );

if ( b == 0 ) { Debug.Assert( false ); return false; }

// this is fixed

Int32 dwBytesRead = 0;

IntPtr ipBytesRead = new IntPtr( & dwBytesRead );

bool b2 = Kernel32.ReadProcessMemory(

hProcess,

ipRemoteBuffer,

ipTBButton,

new UIntPtr( ( uint ) sizeof( TBBUTTON ) ),

ipBytesRead );

if ( ! b2 ) { Debug.Assert( false ); return false; }

}

// button text

fixed ( byte* pLocalBuffer = localBuffer )

{

IntPtr ipLocalBuffer = new IntPtr( pLocalBuffer );

int chars = ( int ) User32.SendMessage( hToolbar, TB.GETBUTTONTEXTW, ( IntPtr ) tbButton.idCommand, ipRemoteBuffer );

if ( chars == -1 ) { Debug.Assert( false ); return false; }

// this is fixed

Int32 dwBytesRead = 0;

IntPtr ipBytesRead = new IntPtr( & dwBytesRead );

bool b4 = Kernel32.ReadProcessMemory(

hProcess,

ipRemoteBuffer,

ipLocalBuffer,

new UIntPtr( BUFFER_SIZE ),

ipBytesRead );

if ( ! b4 ) { Debug.Assert( false ); return false; }

text = Marshal.PtrToStringUni( ipLocalBuffer, chars );

if ( text == " " ) text = String.Empty;

}

Wie baue ich sowas in vb.net? In jedem dieser fixed-Blöcke werden die selben Variablen neu definiert und das ganze innerhalb einer Function. Egal wie ich es anstelle ich bekomme vollkommen unsinnige Werte/Texte zurück und es gibt, basierend auf dem Code, zwar zig Lösungen in C# und C++ aber keinen einzigen der das in VB geschafft hat.

Über Tipps wäre ich dankbar.

Geschrieben

naja ... darauf bin ich schon selbst gekommen aber das hilft mir nicht wirklich weiter, sondern ich brauche noch länger um in dem Stapel nach der passenden Anwendung zu suchen. Und wenn noch ein paar andere Programme laufen, dann schiebt Windows diese Fenster so schmal zusammen, daß ich den Text nicht mehr lesen kann und wieder nicht finde, was ich suche. Sonst hätte ich mich glaube ich nicht an die Eigenkreation einer Taskbar herangemacht.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...