Benutzer mit den meisten Antworten
DeskBand

Frage
Antworten
-
Hallo Stefan,
hier gibt es einen Artikel auf codeproject: http://www.codeproject.com/KB/shell/dotnetbandobjects.aspx
das ist zwar c# aber besser als nichts ;-)
Hannes
If you have got questions about this, just ask.
Mark the thread as answered if the answer helps you. This helps others who have the same problem !
C# to VB.NET: http://www.developerfusion.com/tools/convert/csharp-to-vb/- Als Antwort markiert Thorsten DörflerModerator Sonntag, 4. Juli 2010 09:39
-
Hallo maustiger30,
Schau Dir mal folgende Links an. Vielleicht können sie Dir weiter helfen.
Creating Custom Explorer Bars, Tool Bands, and Desk Bands
http://www.codeproject.com/KB/cs/BandObjects20.aspx
Extending Explorer with Band Objects using .NET and Windows Forms.
Und für IE gibt es spicIE.
Versuch in VB : http://social.msdn.microsoft.com/Forums/fr-FR/vbasicfr/thread/4ed07f1a-97b7-45e5-8cb5-8aef58f50508#a3fadcd1-d9f7-4b4f-814b-8514f75de4a2
Grüße,
Robert
- Als Antwort markiert Thorsten DörflerModerator Sonntag, 4. Juli 2010 09:39
-
Anleitung zur Erstellung eines DeskBands mit VB
1. Verweise (siehe auch bei Robert und Hannes)
Eine Beschreibung für C# ist hier
http://www.codeproject.com/KB/shell/dotnetbandobjects.aspx
Der VB-SourceCode für das Projekt ist hier
2. Anleitung
2.1. Die Dateien hier Download source files - 118 Kb downloaden.
2.2. Daraus die Datei BandObjectsLib.dll und Interop.SHDocVw.dll im Global Assembly Cache registrieren. Wie das geht steht hier: http://msdn.microsoft.com/de-de/library/ex0ss12c.aspx
2.3. In Visual Studio ein neues Projekt vom Typ Klassenbibliothek erstellen und den Code einfügen:
Imports System Imports System.ComponentModel Imports System.Windows.Forms Imports BandObjectsLib Imports System.Runtime.InteropServices Namespace SampleBars '<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _ <Guid("17A34106-412A-4f07-83A9-456377F0F4C8"), BandObject("Hello test", BandObjectStyle.Horizontal Or BandObjectStyle.ExplorerToolbar Or BandObjectStyle.TaskbarToolBar, HelpText:="Shows bar test")> _ Public Class testoolbar Inherits BandObject Private button1 As System.Windows.Forms.Button Private components As System.ComponentModel.Container = Nothing Public Sub New() MyBase.New() InitializeComponent() End Sub Protected Overrides Sub Dispose(ByVal disposing As Boolean) If disposing Then If (Not (components) Is Nothing) Then components.Dispose() End If End If MyBase.Dispose(disposing) End Sub Private Sub InitializeComponent() Me.button1 = New System.Windows.Forms.Button Me.SuspendLayout() ' ' button1 ' Me.button1.Anchor = (((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _ Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right) Me.button1.BackColor = System.Drawing.SystemColors.HotTrack Me.button1.ForeColor = System.Drawing.SystemColors.Info Me.button1.Name = "button1" Me.button1.Size = New System.Drawing.Size(150, 24) Me.button1.TabIndex = 0 Me.button1.Text = "Say test" AddHandler button1.Click, AddressOf Me.button1_Click ' ' HelloWorldBar ' Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.button1}) Me.MinSize = New System.Drawing.Size(150, 24) Me.Name = "Helloteste" Me.Size = New System.Drawing.Size(150, 24) Me.Title = "Helloteste" Me.ResumeLayout(False) End Sub Private Sub button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) MessageBox.Show("test ....") End Sub End Class End Namespace
2.4 Im Modul AssemblyInfo.vb muss hier <Assembly: ComVisible(True)> stehen.
2.5. Daraus eine DLL-Datei erstellen.
2.6. Ein Schlüsselpaar erstellen http://msdn.microsoft.com/de-de/library/6f05ezxy(v=VS.80).aspx
2.7. Die unter 2.4. erzeugte Datei mit dem unter 2.5. generierten starken Namen signieren:
http://msdn.microsoft.com/de-de/library/xc31ft41(v=VS.80).aspx
2.8. Selbige (die DLL) ebenfalls im Global Assembly Cache registrieren.
2.9. Mit dem Assembly Registration-Tool die erforderlichen Einträge bzgl. der neuen DLL in der Registrierung erstellen: http://msdn.microsoft.com/de-de/library/tzat5yw6(VS.80).aspx
2.10. Im InternetExplorer kann nun über Extras\Symbolleisten die neue Leiste hinzugefügt werden.
Thorsten Dörfler gebührt alle Ehre, er hat mir bei diesem Projekt an den entscheidenden Punkten, an denen ich nicht mehr weiterkam, immer sofort die richtige Lösung präsentiert! Vielen Dank Thorsten!
Natürlich auch Danke an Robert und Hannes für die nützlichen Links und alle anderen, welche sich Gedanken zu diesem Fall gemacht haben!
- Bearbeitet maustiger30 Sonntag, 4. Juli 2010 09:28
- Als Antwort markiert Thorsten DörflerModerator Sonntag, 4. Juli 2010 09:37
Alle Antworten
-
Hallo Stefan,
hier gibt es einen Artikel auf codeproject: http://www.codeproject.com/KB/shell/dotnetbandobjects.aspx
das ist zwar c# aber besser als nichts ;-)
Hannes
If you have got questions about this, just ask.
Mark the thread as answered if the answer helps you. This helps others who have the same problem !
C# to VB.NET: http://www.developerfusion.com/tools/convert/csharp-to-vb/- Als Antwort markiert Thorsten DörflerModerator Sonntag, 4. Juli 2010 09:39
-
Hallo maustiger30,
Schau Dir mal folgende Links an. Vielleicht können sie Dir weiter helfen.
Creating Custom Explorer Bars, Tool Bands, and Desk Bands
http://www.codeproject.com/KB/cs/BandObjects20.aspx
Extending Explorer with Band Objects using .NET and Windows Forms.
Und für IE gibt es spicIE.
Versuch in VB : http://social.msdn.microsoft.com/Forums/fr-FR/vbasicfr/thread/4ed07f1a-97b7-45e5-8cb5-8aef58f50508#a3fadcd1-d9f7-4b4f-814b-8514f75de4a2
Grüße,
Robert
- Als Antwort markiert Thorsten DörflerModerator Sonntag, 4. Juli 2010 09:39
-
Anleitung zur Erstellung eines DeskBands mit VB
1. Verweise (siehe auch bei Robert und Hannes)
Eine Beschreibung für C# ist hier
http://www.codeproject.com/KB/shell/dotnetbandobjects.aspx
Der VB-SourceCode für das Projekt ist hier
2. Anleitung
2.1. Die Dateien hier Download source files - 118 Kb downloaden.
2.2. Daraus die Datei BandObjectsLib.dll und Interop.SHDocVw.dll im Global Assembly Cache registrieren. Wie das geht steht hier: http://msdn.microsoft.com/de-de/library/ex0ss12c.aspx
2.3. In Visual Studio ein neues Projekt vom Typ Klassenbibliothek erstellen und den Code einfügen:
Imports System Imports System.ComponentModel Imports System.Windows.Forms Imports BandObjectsLib Imports System.Runtime.InteropServices Namespace SampleBars '<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _ <Guid("17A34106-412A-4f07-83A9-456377F0F4C8"), BandObject("Hello test", BandObjectStyle.Horizontal Or BandObjectStyle.ExplorerToolbar Or BandObjectStyle.TaskbarToolBar, HelpText:="Shows bar test")> _ Public Class testoolbar Inherits BandObject Private button1 As System.Windows.Forms.Button Private components As System.ComponentModel.Container = Nothing Public Sub New() MyBase.New() InitializeComponent() End Sub Protected Overrides Sub Dispose(ByVal disposing As Boolean) If disposing Then If (Not (components) Is Nothing) Then components.Dispose() End If End If MyBase.Dispose(disposing) End Sub Private Sub InitializeComponent() Me.button1 = New System.Windows.Forms.Button Me.SuspendLayout() ' ' button1 ' Me.button1.Anchor = (((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _ Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right) Me.button1.BackColor = System.Drawing.SystemColors.HotTrack Me.button1.ForeColor = System.Drawing.SystemColors.Info Me.button1.Name = "button1" Me.button1.Size = New System.Drawing.Size(150, 24) Me.button1.TabIndex = 0 Me.button1.Text = "Say test" AddHandler button1.Click, AddressOf Me.button1_Click ' ' HelloWorldBar ' Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.button1}) Me.MinSize = New System.Drawing.Size(150, 24) Me.Name = "Helloteste" Me.Size = New System.Drawing.Size(150, 24) Me.Title = "Helloteste" Me.ResumeLayout(False) End Sub Private Sub button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) MessageBox.Show("test ....") End Sub End Class End Namespace
2.4 Im Modul AssemblyInfo.vb muss hier <Assembly: ComVisible(True)> stehen.
2.5. Daraus eine DLL-Datei erstellen.
2.6. Ein Schlüsselpaar erstellen http://msdn.microsoft.com/de-de/library/6f05ezxy(v=VS.80).aspx
2.7. Die unter 2.4. erzeugte Datei mit dem unter 2.5. generierten starken Namen signieren:
http://msdn.microsoft.com/de-de/library/xc31ft41(v=VS.80).aspx
2.8. Selbige (die DLL) ebenfalls im Global Assembly Cache registrieren.
2.9. Mit dem Assembly Registration-Tool die erforderlichen Einträge bzgl. der neuen DLL in der Registrierung erstellen: http://msdn.microsoft.com/de-de/library/tzat5yw6(VS.80).aspx
2.10. Im InternetExplorer kann nun über Extras\Symbolleisten die neue Leiste hinzugefügt werden.
Thorsten Dörfler gebührt alle Ehre, er hat mir bei diesem Projekt an den entscheidenden Punkten, an denen ich nicht mehr weiterkam, immer sofort die richtige Lösung präsentiert! Vielen Dank Thorsten!
Natürlich auch Danke an Robert und Hannes für die nützlichen Links und alle anderen, welche sich Gedanken zu diesem Fall gemacht haben!
- Bearbeitet maustiger30 Sonntag, 4. Juli 2010 09:28
- Als Antwort markiert Thorsten DörflerModerator Sonntag, 4. Juli 2010 09:37
-
Hallo Stefan,
2.8. Mit dem Assembly Registration-Tool die erforderlichen Einträge bzgl. der neuen DLL in der Registrierung erstellen: http://msdn.microsoft.com/de-de/library/tzat5yw6(VS.80).aspx
Leider hat gerade der letzte Schritt bei mir nicht funktioniert. Das Programm regasm.exe teilte mir mit: RegAsm : warning RA000 : Es wurden keine Typen registriert .
Hast Du Das ComVisible Attribut Deines Assembly auf True gesetzt?
' AssemblyInfo.vb <Assembly: ComVisible(True)>
Die AssemblyInfo.vb findest Du unter "My Project", nachdem Du im Projektexplorer die Option "Alle Dateien" gewählt hast. Oder in den Projekt Eigenschaften > Assembly Information [X] Make assembly COM-visible
Thorsten Dörfler
Microsoft MVP Visual Basic
vb-faq.de -
RegAsm : warning RA000 : Es wurden keine Typen registriert
Auf Codeproject [unten bei Kommentare] und mit Google finden sich dazu etwa:
In den Projekt-Einstellungen fehlt evtl. ComVisible = true,
oder eine deiner alten DLL-Assembly ist schon registriert und/oder im GAC (bitte entfernen),
oder Konflikt mit der GUID. -
Ja, ist Windows7 64-Bit Professional.
Ich denke mal, man sollte nach dem Erstellen der Eintäge in der Registrierung, über rechte Maus\Symbolleisten die neue Leiste hinzufügen können. Was eben gerade nicht geht.Im Internetexplorer geht es zumindest via Extras\Symbolleisten...
-
Windows7 64-Bit Professional.
dann müssen wohl alle beteiligten Projekte (DLLs/Assemblies) auf 64-Bit umgestellt werden, im 'einfachsten' Fall für .NET müsste die Zielplattform auf 'AnyCPU' umgestellt werden, dann alles neu kompilieren und registrieren.
Vorsicht, das gilt höchstwahrscheinlich _auch_ für alles aus jenem CodeProject ZIP verwendete/referenzierte; enthält anscheinend sogar irgendwelche C++ (Hilf-) DLLs, welche uU aufwändiger zu migrieren sind. -
Windows7 64-Bit Professional.
Im Internetexplorer geht es...
weiter, den Internet-Explorer gibt es bei 64-Bit OS zweifach (32+64bittig)!
Falls du beide unterstützen willst, musst du auch 'doppelt' arbeiten, zumindest für native (C++) Code und die Einträge in Registry. -
Hallo Thomas,
Du hast Recht, es funktioniert auch bloß bei dem 32-bit IE.
Für meine eigene DLL habe ich in den Projekteigenschaften unter Debuggen die Plattform auf Aktiv (Any CPU ) gesetzt, ich denke, dass hast Du gemeint. Danach neue DLL erstellt + gacutil + regasm.
Nur wie kann ich die BandObjectsLib.dll umstellen?
Ich habe die gesamte Projektmappe runtergeladen, incl. der BandObjects2.0.sln , diese ist aber mit VS C# geschrieben und man kann sie offensichtlich nicht mit VS2010 VB öffnen?
VG Stefan
-
Ich habe die gesamte Projektmappe runtergeladen, incl. der BandObjects2.0.sln , diese ist aber mit VS C# geschrieben und man kann sie offensichtlich nicht mit VS2010 VB öffnen?
wenn du nur die 'Express' VB2010 hast, dann geht C# natürlich nicht.
Da brauchst du mind. die C#2010 Express dazuinstallieren (was sowieso oft von Vorteil ist).
Aber evtl. war der C# -Teil ab CodeProject schon (historisch) als AnyCPU voreingestellt/kompiliert.
Zu RegAsm wäre offen, ob die 64-Bit Version (etwa unter:
"C:\Windows\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe"
zu nehmen ist.P.S. was die Register/RegisterLib C++ Projekte aus dem ZIP sollen, mag ich gerade nicht prüfen.
-
Hallo Thomas,
danke für deine nützlichen Antworten.
Habe nun mit C:\Windows\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe registriert. Und siehe da - nun erscheint der Button auch im 64-bit IE und nun auch in der Taskleiste .
Allerdings erscheint beim Einbinden via rechte Maus auf Taskleiste\Symbolleisten die Meldung:
"Die Symbolleiste ... ist mit dieser Version von Windows nicht kompatibel. Wenn der Vorgang fortgesetzt wird, wird die Symbolleiste möglicherweise nicht ordnungsgemäß angezeigt. Wenn Sie eine Überprüfung auf eine aktualisiert Version ausführen möchten, besuchen Sie die Webseite des Softwareherausgebers. Soll die Symbolleiste auf Ihrer Taskleiste angezeigt werden?"
Die Symbolleiste wird dann aber korrekt angezeigt.
Vermute, dass nun eben noch die BandObjectsLib.dll anzupassen ist.
VG Stefan
- Bearbeitet maustiger30 Sonntag, 4. Juli 2010 14:37
-
mit Einschränkungen..mit dieser Version von Windows nicht kompatibel
riecht verdächtig nach dem Windows Admin/UAC-Krampf (Manifest usw)?
[dem mag ich dann aber an einem Sonntag nicht nachgehen, ist bei mir eh immer aus]
Was Entwickler da alles zu beachten haben ist in MSDN beschrieben. -
"Die Symbolleiste ... ist mit dieser Version von Windows nicht kompatibel. Wenn der Vorgang fortgesetzt wird, wird die Symbolleiste möglicherweise nicht ordnungsgemäß angezeigt.
suche (engl) wäre wohl:
http://www.google.com/search?q=%22toolbar+might+appear+incorrectly%22ergibt evtl., dass eine neuere Version eines COM-Interfaces nötig sei:
http://www.google.com/search?q=IDeskBand2
http://www.pinvoke.net/default.aspx/Interfaces/IDeskBand2.html