Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > .NET Languages
You last visited: Today at 11:43

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[VB] Combobox bringtofront

Discussion on [VB] Combobox bringtofront within the .NET Languages forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Sep 2008
Posts: 111
Received Thanks: 27
[VB] Combobox bringtofront

Hi,

ich hab eine Combobox erstellt die mir einen bestimmten Prozess ausliest und listet > funktioniert wunderbar

Nun ist mein Problem, ich würde gern "bringtofront" also, diesen Prozess "als erstes" auf meinen Desktop hocheben, wenn man das so sagen kann


Ich habe gedacht, dürfte ja gehen wenn ich

Code:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        ComboBox1.SelectedItem.show()
    End Sub
oder ".ComboBox1.SelectedItem.bringtofront()" benutze, pustekuchen

Es kommt nur eine Fehlermeldung



Da ich leider noch nicht so erfahren in Umgang mit VB bin, bitte ich um Nachsicht und auf eine gute Hilfe
silvermf1991 is offline  
Old 04/25/2014, 17:50   #2
 
tolio's Avatar
 
elite*gold: 2932
The Black Market: 169/1/0
Join Date: Oct 2009
Posts: 6,966
Received Thanks: 1,097
hwnd handle auslesen
pinvoke machen
fertig
tolio is offline  
Old 04/25/2014, 18:20   #3
 
elite*gold: 0
Join Date: Sep 2008
Posts: 111
Received Thanks: 27
Quote:
Originally Posted by tolio View Post
hwnd handle auslesen
pinvoke machen
fertig
Sachte sachte

Was ist HWND und wie les ich das aus?

Zu pinvoke: Ich hab das VB genommen, hoffe das war richtig weil andere "Codingsprache" die da sind kenn ich absolut garnicht

Code:
Public Declare Function BringWindowToTop Lib "user32" (ByVal HWnd As IntPtr) As Boolean
silvermf1991 is offline  
Old 04/25/2014, 18:41   #4


 
elite*gold: 1091
Join Date: Jun 2007
Posts: 19,836
Received Thanks: 7,180
Quote:
Originally Posted by silvermf1991 View Post
Was ist HWND und wie les ich das aus?
Ein Handle zu einem Fenster. Also etwas, was dieses Fenster eindeutig identifiziert. Meistens gibt's da Funktionen die das auslesen können. Ansonsten hast du doch sicher eine Process Instanz die du für das Programm nutzt, oder? Da gibt's ne Eigenschaft MainWindowHandle, wie wär's damit?
Mostey is offline  
Old 04/25/2014, 18:56   #5
 
elite*gold: 0
Join Date: Sep 2008
Posts: 111
Received Thanks: 27
Quote:
Originally Posted by Mostey;28020284Ansonsten hast du doch sicher eine [I
Process[/I] Instanz die du für das Programm nutzt, oder? Da gibt's ne Eigenschaft MainWindowHandle, wie wär's damit?
Leider kann ich mit "Prozessinstanz" nichts anfangen hab darüber echt kein Plan was du nun damit meinst

*gleich schon schläge erwarte*


Code:
Public Class Form1

    Public Declare Function BringWindowToTop Lib "user32" (ByVal HWnd As IntPtr) As Boolean
    Public ReadOnly Property MainWindowHandle As IntPtr
        Get

        End Get
    End Property
So stehts nun am Anfang bei mir

Ich finds komisch das ich ohne große Mühe den Prozess/e Id's + Name raussuchen und filtern konnte, aber nun hier so verkacke

Ich hoffe ihr habt mit mir Geduld
silvermf1991 is offline  
Old 04/25/2014, 19:07   #6


 
elite*gold: 1091
Join Date: Jun 2007
Posts: 19,836
Received Thanks: 7,180
Quote:
Originally Posted by silvermf1991 View Post
Leider kann ich mit "Prozessinstanz" nichts anfangen hab darüber echt kein Plan was du nun damit meinst
OK, wie öffnest du den anderen Prozess denn? Oder wie findest du ihn? Poste mal deinen Code dazu.

Quote:
Originally Posted by silvermf1991 View Post
Code:
Public Class Form1

    Public Declare Function BringWindowToTop Lib "user32" (ByVal HWnd As IntPtr) As Boolean
    Public ReadOnly Property MainWindowHandle As IntPtr
        Get

        End Get
    End Property
Mit Process Instanz war eine Instanz der Klasse Process gemeint, keine Eigenschaft in deiner Form.


Quote:
Originally Posted by silvermf1991 View Post
Ich hoffe ihr habt mit mir Geduld
So lange du dich bemühst, sollte das kein Problem sein.
Mostey is offline  
Old 04/25/2014, 20:25   #7
 
elite*gold: 0
Join Date: Sep 2008
Posts: 111
Received Thanks: 27
Quote:
Originally Posted by Mostey View Post
OK, wie öffnest du den anderen Prozess denn? Oder wie findest du ihn? Poste mal deinen Code dazu.
Code:
        Dim pList() As System.Diagnostics.Process =
        System.Diagnostics.Process.GetProcessesByName("prozessname")
        For Each proc As System.Diagnostics.Process In pList
            ComboBox1.Items.Add(proc.ProcessName & proc.Id)
        Next
Da muss ich noch mit Asc nen Leerzeichen / Doppelpunkt einfügen, aber solange geht es noch, ist ja nurn schönheitsfehler


Quote:
Originally Posted by Mostey View Post
So lange du dich bemühst, sollte das kein Problem sein.
Möge mich meine Bemühung auch dann belohnen
silvermf1991 is offline  
Old 04/25/2014, 20:29   #8


 
elite*gold: 1091
Join Date: Jun 2007
Posts: 19,836
Received Thanks: 7,180
Quote:
Originally Posted by silvermf1991 View Post
Code:
        Dim pList() As System.Diagnostics.Process =
        System.Diagnostics.Process.GetProcessesByName("prozessname")
        For Each proc As System.Diagnostics.Process In pList
            ComboBox1.Items.Add(proc.ProcessName & proc.Id)
        Next
Da muss ich noch mit Asc nen Leerzeichen / Doppelpunkt einfügen, aber solange geht es noch, ist ja nurn schönheitsfehler


Damit hast du dein Handle. SetForegroundWindow oder etwas ähnliches und dann dürfte das passen.
Mostey is offline  
Thanks
1 User
Old 04/25/2014, 20:53   #9
 
elite*gold: 0
Join Date: Sep 2008
Posts: 111
Received Thanks: 27
Quote:
Originally Posted by Mostey View Post
Damit hast du dein Handle. SetForegroundWindow oder etwas ähnliches und dann dürfte das passen.
Ok.. Jetzt scheißt das Programm wenigstens nicht ab, wenn ich den Button zum "hervorheben" klicke!

Nur leider, hebt der das Fenster immernoch nicht nach oben

Hab ich gerade nen denkfehler oder hab ich was übersehen?

Code:
Public Class Form1

    Dim SetForegroundWindow As Object
    Public ReadOnly Property MainWindowHandle As IntPtr
        Get

        End Get
    End Property
Code:
    Private Sub ComboBox1_Click(sender As Object, e As EventArgs) Handles ComboBox1.Click
        ComboBox1.Items.Clear()
        Dim pList() As System.Diagnostics.Process =
        System.Diagnostics.Process.GetProcessesByName("prozessname")
        For Each proc As System.Diagnostics.Process In pList
            ComboBox1.Items.Add(proc.ProcessName & Asc(0) & proc.Id)
        Next
    End Sub
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        SetForegroundWindow = ComboBox1.SelectedItem
    End Sub
silvermf1991 is offline  
Old 04/25/2014, 21:23   #10


 
elite*gold: 1091
Join Date: Jun 2007
Posts: 19,836
Received Thanks: 7,180
SetForegroundWindow() ist eine Funktion aus der user32.dll, kein Objekt.

Quote:
Note that MainWindowHandle returns 0 if the main window is hidden...


Da würde mir spontan noch die FindWindow() Funktion aus der WinAPI einfallen.

Quote:
If you don't mind using the Windows API, you could use EnumWindowsProc, and check each of the handles that that turns up using GetWindowThreadProcessId (to see that it's in your process), and then maybe IsWindowVisible, GetWindowCaption and GetWindowTextLength to determine which hWnd in your process is the one you want.

Though if you haven't used those functions before that approach will be a right pain, so hopefully there's a simpler way.


scheint da eine gute Möglichkeit, um nicht alle Funktionen selber noch einmal einbinden zu müssen. Hat tolio aber auch schon genannt. Ergänzend dazu musst du das Fenster erstmal finden.
Mostey is offline  
Old 04/25/2014, 22:06   #11
 
elite*gold: 0
Join Date: Sep 2008
Posts: 111
Received Thanks: 27
Ok nun bin ich ganz draussen >_<

Die Links sind aber fast nur C++ / C#, ich basiere doch eher auf vb.net, oder?

Hier was bei mir nun ist, ich kapiere jedenfalls nur, das es gerade nicht klappt

Code:
    Dim nWnd As IntPtr
    Dim ceroIntPtr As New IntPtr(0)
    Dim Wnd_name As String

    Private Property FindWindow(p1 As Object, Wnd_name As String) As IntPtr
        Get
            Return _findWindow
        End Get
        Set(value As IntPtr)
            _findWindow = value
        End Set
    End Property
Code:
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Wnd_name = "firefox.exe"
        nWnd = FindWindow(Nothing, Wnd_name)
        'show the info
        If nWnd.Equals(ceroIntPtr) Then
            MsgBox("Fenster läuft nicht")
        Else
            MsgBox("Fenster läuft")
        End If
    End Sub
Aber beim "klicken" kommt immer nur "Nicht gefunden"
silvermf1991 is offline  
Old 04/25/2014, 22:40   #12


 
elite*gold: 1091
Join Date: Jun 2007
Posts: 19,836
Received Thanks: 7,180
Quote:
Originally Posted by silvermf1991 View Post
Ok nun bin ich ganz draussen >_<

Die Links sind aber fast nur C++ / C#, ich basiere doch eher auf vb.net, oder?
Die Links haben mit den Programmiersprachen eher wenig zutun. Fokus liegt hier eher auf der WinAPI die sowohl von C++, von C# als auch von VB.NET genutzt wird. In C++ wirst du nur häufiger von den Funktionen Gebrauch machen müssen, weil es dort nicht für alles einen Wrapper gibt, wie es in den .NET Sprachen meist der Fall ist.

C# kann man übrigens ohne Probleme in VB.NET übersetzen, geht auch umgekehrt.

Ich hab schon vermutet das du da nicht so richtig hinterherkommst, allerdings weiß ich wirklich nicht, wie ich dir das anders vermitteln soll. Dazu müsstest du auch erstmal wissen, was die WinAPI ist, wieso sie existiert und wie sie in Programmiersprachen wie VB.NET genutzt wird.

Hier sieht man auch noch einmal gut die Abhängigkeiten, wenn auch nicht auf dem aktuellen Stand:



Kernel, Treiber und Dienste fehlen hier zwar auch, macht aber nichts.

Du kannst die Funktionen aus der dazugehörigen DLL importieren. (Welche das ist, steht in MSDN auf der jeweiligen Seite der Funktion)

Sieht ungefähr so aus:
Code:
[DllImport("user32.dll", EntryPoint = "FindWindow")]
    private static extern IntPtr FindWindow(string lp1, string lp2);
Heißt also, hier wird die Funktion FindWindow() aus der user32.dll importiert, damit dein Programm diese nutzen kann.


Quote:
Originally Posted by silvermf1991 View Post
Hier was bei mir nun ist, ich kapiere jedenfalls nur, das es gerade nicht klappt

Code:
    Dim nWnd As IntPtr
    Dim ceroIntPtr As New IntPtr(0)
    Dim Wnd_name As String

    Private Property FindWindow(p1 As Object, Wnd_name As String) As IntPtr
        Get
            Return _findWindow
        End Get
        Set(value As IntPtr)
            _findWindow = value
        End Set
    End Property
Code:
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Wnd_name = "firefox.exe"
        nWnd = FindWindow(Nothing, Wnd_name)
        'show the info
        If nWnd.Equals(ceroIntPtr) Then
            MsgBox("Fenster läuft nicht")
        Else
            MsgBox("Fenster läuft")
        End If
    End Sub
Aber beim "klicken" kommt immer nur "Nicht gefunden"
Dein Code ist auch unvollständig, _findWindow sehe ich nicht und den Import von FindWindow auch nicht.
Mostey is offline  
Thanks
1 User
Old 04/26/2014, 01:28   #13
 
elite*gold: 0
Join Date: Sep 2008
Posts: 111
Received Thanks: 27
Quote:
Originally Posted by Mostey View Post
Fokus liegt hier eher auf der WinAPI die sowohl von C++, von C# als auch von VB.NET genutzt wird. In C++ wirst du nur häufiger von den Funktionen Gebrauch machen müssen, weil es dort nicht für alles einen Wrapper gibt, wie es in den .NET Sprachen meist der Fall ist.

C# kann man übrigens ohne Probleme in VB.NET übersetzen, geht auch umgekehrt.

Hab gerade gesehen, ich kann ja das Projekt neu machen, aber direkt auf C# ( hab mir mal "neues Project" genau angeschaut, hab garnicht gesehen das man direkt auf C# umstellen kann )

Werd erstmal was ich nun hab, soweit ich kann, "umschreiben" bzw. neu schreiben, denke das wird dann einfacher sein

Quote:
Originally Posted by Mostey View Post
Ich hab schon vermutet das du da nicht so richtig hinterherkommst, allerdings weiß ich wirklich nicht, wie ich dir das anders vermitteln soll. Dazu müsstest du auch erstmal wissen, was die WinAPI ist, wieso sie existiert und wie sie in Programmiersprachen wie VB.NET genutzt wird.
Auf die schnelle würde ich sagen, Windows Programme basieren auf Framework, um ältere Programme / Windows Systeme mit neuen Programmen / System kompatibel sein können, sodass man mit einer Codesprache, sagen wir nun .Net4 ist von W2000 bis W7 bestens geeignet, sodass man nicht wie bei Mac / Windows / Linux alles anders coden muss, damit es funktioniert

Lieg ich so in etwa mit meiner Vermutung richtig? :s

Quote:
Originally Posted by Mostey View Post
Du kannst die Funktionen aus der dazugehörigen DLL importieren. (Welche das ist, steht in MSDN auf der jeweiligen Seite der Funktion)
Das machen wa wenn ich das Design soweit es geht in C# gebracht hab!
silvermf1991 is offline  
Old 04/26/2014, 13:29   #14


 
elite*gold: 1091
Join Date: Jun 2007
Posts: 19,836
Received Thanks: 7,180
Quote:
Originally Posted by silvermf1991 View Post
Auf die schnelle würde ich sagen, Windows Programme basieren auf Framework, um ältere Programme / Windows Systeme mit neuen Programmen / System kompatibel sein können, sodass man mit einer Codesprache, sagen wir nun .Net4 ist von W2000 bis W7 bestens geeignet, sodass man nicht wie bei Mac / Windows / Linux alles anders coden muss, damit es funktioniert

Lieg ich so in etwa mit meiner Vermutung richtig? :s
Wenn du damit sagen willst, das du die WinAPI auch auf Unix, Linux und Mac nutzen kannst, um nicht portieren zu müssen, liegst du falsch. Wieso sollte es auch ne Windows API bei Linux geben?

Die WinAPI stellt halt die Schnittstelle zwischen OS und deinem Programm dar. Wenn es die nicht gäbe, könnte dein Programm über das Betriebssystem nichts machen und auf nichts zugreifen, was die Anzeige eines Fensters ja schon unmöglich macht, weil du deine Fenster ebenfalls beim OS anmelden musst.

Wie das so bei Linux läuft, kann ich dir nicht sagen. Hab' noch nie etwas auf Linux programmiert.
Mostey is offline  
Old 04/26/2014, 13:43   #15
 
elite*gold: 0
Join Date: Sep 2008
Posts: 111
Received Thanks: 27
Quote:
Originally Posted by Mostey View Post
Wenn du damit sagen willst, das du die WinAPI auch auf Unix, Linux und Mac nutzen kannst, um nicht portieren zu müssen, liegst du falsch. Wieso sollte es auch ne Windows API bei Linux geben?

Die WinAPI stellt halt die Schnittstelle zwischen OS und deinem Programm dar.

Ich meinte es ja auch so

Man kann von, wie ich oben als beispiel schrieb, von Windows 2000 bis zu Windows 7 alles dank der Windows API, die vom Framework abhängt, überall benutzen, ausser bei Linux / Mac etc. da diese nen komplett andere "Codesprache" benötigen aber egal ich denke ich weiß was damit in etwa gemeint ist (:

und ich hab nun das Programm für C# umgeschrieben, nur das ich nun nichtmehr den Prozess auslesen kann, aber denke mit C# werd ich besser umgehen können, ich mag die Struktur eher als wie auf VB

Ich habe oben nun eingefügt: "using Tool_by_Devidra;", so sollte er doch für alle Formen ( wenn ich dies oben einfüge ) alle Klassen und co. benutzen die ich im Projekt erstelle?
silvermf1991 is offline  
Reply


Similar Threads Similar Threads
Hilfe mit combobox!
02/12/2014 - .NET Languages - 6 Replies
Hi Leute! Zu meinem Problem: Ich habe eine WinForm erstellt mit einer combobox und diese auch mit inhalt gefüllt. Mein Problem, das ich möchte das das ausgewählte item nach einem button klick ausgelesen wird. Ich meine damit wenn in der auswahl steht zb. "rockefeller", das nach dem Klick über ein Label beschrieben wird wie oder wer oder was "rockefeller" ist. Hoffe ihr könnt mir helfen :)
[VB]Wie Combobox von Webbrowser in Combobox in Form hinzufügen
01/06/2014 - .NET Languages - 3 Replies
^Topic
[Source]ComboBox
03/12/2012 - Flyff Private Server - 3 Replies
Hey, Simple Frage: Ich möchte einen Code ausführen lassen, sobald der User den Inhalt einer ComboBox (m_SelectedIndex) ändert. Hab es in der OnChildNotify schon so versucht: case WIDC_COMBOBOX1: blabla break; Wie kann ich das richtig lösen?
combobox-CLR
03/11/2012 - C/C++ - 11 Replies
Me and friend wanna make a project.So we wanna a button read a combobox,which that combo,will have slots like slot1,slot2 etc. slots will be values like slot1 = 12345 slot2 = 123456 and we want a button read the slot and write to memory with value,a slot of combo list. Sorry for fails english D;



All times are GMT +1. The time now is 11:43.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.