funkce knihovny API   otázka

VB.NET

Dobrý den, ahoj,

nevíte někdo pls jak zprovoznit API v VB2005? Nebo jak to tam funguje?

V "Project/Add Reference/COM" jsem našel "32-bit Windows API declarations (ANSI)", v "Project/Add Reference/Recent" už to mám taky vidět jako "Win32.tlb", ale když v kódu používám ty funkce, tak je to podtržené a píše to, že ta funkce není "declared"... Mám tento kód na schování tlačítka "Start", který ve VBA funguje:

        Dim Tray As Long, Start As Long

        Tray = FindWindow("Shell_TrayWnd", "")
        Start = FindWindowEx(Tray, 0, "Button", vbNullString)
        ShowWindow(Start, SW_HIDE)

Ale v VB2005 nee...

Můžete mi prosím poradit? Předem mockrát děkuji!

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Pokud je tato pochybná knihovna korektně odkazována v projektu, můžete si její strukturu prohlédnout v Object Browseru a najít potřebné funkce. Pokud jsou v této knihovně definovány pouze konstanty, potom je k ničemu a samotné API funkce budete stejně muset deklarovat ručně pomocí atributu DllImport případně postaru pomocí Public Declare Function...

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Aha! Děkuji.

PS: Nevíte o nějaké vhodnější knihovně, abych rozchodil ty API funkce? (omlouvám se, že to takhle píšu, ale zatím to "API" jaksi neovládám a teprve se to učím...)

Ještě jednou mockrát děkuji!

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Žádná knihovna není potřeba. Požadovanou API funkci si najdete na MSDN v oddělení Platform SDK a potom už stačí nadeklarovat ji se správnými parametry jedním z výše uvedených způsobů.

Příklad:

Definici funkce MessageBoxEx naleznete na MSDN:

http://msdn.microsoft.com/en-us/library/...

Imports System.Runtime.InteropServices
Public Class Form1
  Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
    UnsafeNativeMethods.MessageBoxEx(Me.Handle, "Volání API funkce MessageBoxEx proběhlo úspěšně.", "Informace", 0, 405)
  End Sub
End Class
Public Module UnsafeNativeMethods
  'Vytvořeno podle signatury API funkce MessageBoxEx
  <DllImport("user32.dll")> _
  Public Function MessageBoxEx(ByVal hWnd As IntPtr, _
                               ByVal lpText As String, _
                               ByVal lpCaption As String, _
                               ByVal uType As UInteger, _
                               ByVal wLanguageId As UShort) As Integer
  End Function
End Module

API funkce jsou definovány v jazyce C++. Převod datových typů z C++ do Managed jazyků (Visual Basic .NET, C#) naleznete rovněž na MSDN:

http://msdn.microsoft.com/en-us/library/...

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback