Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Windows apifråga

Postades av 2009-03-31 13:12:50 - Anders Malmgren, i forum c# (c-sharp), Tråden har 10 Kommentarer och lästs av 1022 personer

Hej.
Finns det nått sätt att få ut handlet till textboxen eller kontrollren som är fokus?
Måste avgöra om den textboxen som är i focus är en password box...

Skriver en liten tool för att hantera lösenord...


Svara

Sv: Windows apifråga

Postades av 2009-03-31 22:17:42 - André Claesson

Du menar handlet till en kontroll i en annan applikation?


Svara

Sv:Windows apifråga

Postades av 2009-03-31 23:23:55 - André Claesson

Här finns i alla fall en exempelapp som tar fram hWnd på den kontroll du håller musen över.

http://www.codeproject.com/KB/dotnet/PassInfoKeep.aspx


Svara

Sv: Windows apifråga

Postades av 2009-04-01 09:05:19 - Anders Malmgren

Det finns en GetFocus metod i win apiet.. Men den pekaren som returneras är alltid noll :/
Nån som fått den att funka?

http://pinvoke.net/default.aspx/user32/GetFocus.html


Svara

Sv:Windows apifråga

Postades av 2009-04-01 18:50:10 - André Claesson

Jag håller på att skriva en artikel om detta och du och andra får gärna beta-testa koden innan jag publicerar den.

Saken är den att GetFocus bara returnerar den fokuserade kontrollen i den aktiva tråden. Eftersom din applikation körs i en annan tråd kommer det inte att fungera.
Jag har skrivit ihop kod som visar hur du tillfälligt kan koppla in din tråds message queue till den andras med hjälp av AttachThreadInput.

        [DllImport("user32.dll")]
        static extern IntPtr GetForegroundWindow();

        [DllImport("user32.dll")]
        static extern IntPtr GetWindowThreadProcessId(IntPtr hWnd, IntPtr ProcessId);

        [DllImport("user32.dll")]
        static extern IntPtr AttachThreadInput(IntPtr idAttach, IntPtr idAttachTo, bool fAttach);

        [DllImport("user32.dll")]
        static extern IntPtr GetFocus();

        public FormMain()
        {
            InitializeComponent();
        }

        private void timerUpdate_Tick(object sender, EventArgs e)
        {
            labelHandle.Text = "hWnd: " + FocusedControlInActiveWindow().ToString();
        }

        private IntPtr FocusedControlInActiveWindow()
        {
            IntPtr activeWindowHandle = GetForegroundWindow();

            IntPtr activeWindowThread = GetWindowThreadProcessId(activeWindowHandle, IntPtr.Zero);
            IntPtr thisWindowThread = GetWindowThreadProcessId(this.Handle, IntPtr.Zero);

            AttachThreadInput(activeWindowThread, thisWindowThread, true);
            IntPtr focusedControlHandle = GetFocus();
            AttachThreadInput(activeWindowThread, thisWindowThread, false);

            return focusedControlHandle;
        }


Lägg till en timer med Interval 100 och koppla dess Tick-event. Se till att Enabled är True.
Lägg till en label.
Sätt Form.TopMost till True.


Svara

Sv: Windows apifråga

Postades av 2009-04-02 09:29:20 - Anders Malmgren

Titta, jag får ju tillbaka handlet...
Tack!

Nu undrar jag en ny grej, trodde detta skulle vara det enkla..
Jag måste kolla om handlet hör till en textbox (inte en .net textbox utan en winapi textbox) och sedan kolla om det är av passwordtype...

tittade lite på pinvoke.net men hittar inge bra...


Svara

Sv:Windows apifråga

Postades av 2009-04-02 10:00:46 - Anders Malmgren

GetWindowLong returnerar en int

http://pinvoke.net/default.aspx/user32/GetWindowLong.html

Här listar de lite olika window styles constants bland annat _ES_PASSWORD
http://www.libertybasicuniversity.com/lb4help/STYLEBITS.htm

Men de säger inte dess värde :/

Nån som vet vad jag ska OR:a med för att få ut om fönstret/kontrollen har _ES_PASSWORD satt?


Svara

Sv: Windows apifråga

Postades av 2009-04-02 10:49:00 - Anders Malmgren

Nu funkar det för winforms...

värdet var 0x20

Dock funkar det ej från explorer eller firefox.. Det blir false.. Koden ser ut såhär...

IntPtr ptr = FocusedControlInActiveWindow();
int result = GetWindowLong(ptr, GWL_STYLE);

System.Diagnostics.Debug.WriteLine((result & ES_PASSWORD) == ES_PASSWORD);


System.Diagnostics.Debug.WriteLine(result);

Konstanterna
private const int GWL_STYLE = -16;
private int ES_PASSWORD = 0x0020;


Svara

Sv:Windows apifråga

Postades av 2009-04-02 15:07:26 - Anders Malmgren

Jag använde hwden på det aktuellta föntret för att hämta IHtmlDocumentet. Men detta funkar bra för IE

Hur gör man för Firefox?


Svara

Sv: Windows apifråga

Postades av 2009-04-02 17:12:43 - André Claesson

Mm, kontrollerna på en webbsida har ju inget hWnd.

En annan sak, i äldre Windows-versioner vet jag att det gick att läsa ut lösenordet på liknande sätt från en password-textbox. Men det går väl inte i nyare versioner, XP & Vista?


Svara

Sv:Windows apifråga

Postades av 2009-04-03 14:39:16 - Anders Malmgren

Nej de har ju inte det.. Därför har jag löst det så att om jag inte kan avgöra ES_Password för aktiv kontroll så hämtar jag fönstret som är i fokus.. Är det ett IE fönster så hämtar jag IHtmlDocument objektet och hämtar html-element som är i fokus och kollar om type="password"

Jag skulle vilja göra nått liknande för FF..


Svara

Nyligen

  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper
  • 16:36 Allt du behöver veta om keramiskt
  • 16:14 Vem anlitar man egentligen när tak
  • 16:14 Vem anlitar man egentligen när tak
  • 16:13 Vem anlitar man egentligen när tak
  • 11:52 Noen erfaring med uttak hos Mostbe
  • 11:51 Noen erfaring med uttak hos Mostbe

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 699
27 958
271 741
771
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies