Oppure

Loading
23/07/09 11:43
Thejuster
Scusate volevo chiedere dove o come potrei recuperare
una piccola lista di tutti gli EntryPoint che posso utilizzare
alle librerie di sistema esempio user32.dll
avere una lista completa di tutti gli EntryPoint e medoti che si possono utilizzare.

mire.forumfree.it/ - Mire Engine
C# UI Designer
23/07/09 12:04
riseofapocalypse
Intendi come dichiarare le funzioni API nei tuoi programmi?
aaa
23/07/09 12:20
Thejuster
No,
Intendo una lista degli argomenti su cui Accedere.
Del tipo faccio un esempio


[DllImport("user32.dll", EntryPoint="MessageBox")]
static extern int MsgBox(int HWND, string msg, string caption, int msgType);



L'entryPoint in questione e MessageBox quindi ho creato esempio un Wrapper MsgBox in C#

cerco da tempo una lista completa di tutti gli argomenti delle api
dai punti d'ingresso o anche magari una stesura sulla predisposizione di un Call.
mire.forumfree.it/ - Mire Engine
C# UI Designer
23/07/09 12:39
theprogrammer
Postato originariamente da Thejuster:

No,
Intendo una lista degli argomenti su cui Accedere.
Del tipo faccio un esempio


[DllImport("user32.dll", EntryPoint="MessageBox")]
static extern int MsgBox(int HWND, string msg, string caption, int msgType);



L'entryPoint in questione e MessageBox quindi ho creato esempio un Wrapper MsgBox in C#

cerco da tempo una lista completa di tutti gli argomenti delle api
dai punti d'ingresso o anche magari una stesura sulla predisposizione di un Call.


Beh ... un entry point e' inteso (normalmente) l'indirizzo (relativo o assoluto) di una funzione in una libreria o comunque di codice all'interno di un insieme di codice. Naturalmente l'indirizzo puo' anche essere espresso simbolicamente e nella DllImport e' comunque sinonimo di "alias" ... ma non importa ...

Tutto quello che cerchi circa nomi e argomenti delle API sta tutto su MSDN Online ... ad esempio, per la MessageBox

msdn.microsoft.com/en-us/library/…
aaa
23/07/09 13:06
Thejuster
Grazie mille proprio quello che cercavo :k:
mire.forumfree.it/ - Mire Engine
C# UI Designer
23/07/09 18:15
Thejuster
Domanda.

Come posso Convertire o meglio inviare in un modo migliore quei parametri?
esempio utilizzare una stringa anzichè (uint)

ho provato in questo modo ma continua a darmi errore




[DllImport("user32.dll")]
static extern bool AnimateWindow(IntPtr HWND, int time, AnimateWindowFlags flags);


//Test Animazione
 [STAThread]
        private void button1_Click(object sender, EventArgs e)
        {
            AnimateWindow(this.Handle, 1000, (uint) AnimateWindowFlags.AW_VER_NEGATIVE);

        }


//dichiarazione uint flag

enum AnimateWindowFlags : uint
        {
            AW_HOR_POSITIVE = 0x00000001,
            AW_HOR_NEGATIVE = 0x00000002,
            AW_VER_POSITIVE = 0x00000004,
            AW_VER_NEGATIVE = 0x00000008,
            AW_CENTER = 0x00000010,
            AW_HIDE = 0x00010000,
            AW_ACTIVATE = 0x00020000,
            AW_SLIDE = 0x00040000,
            AW_BLEND = 0x00080000
        }

Ultima modifica effettuata da Thejuster 23/07/09 18:19
mire.forumfree.it/ - Mire Engine
C# UI Designer
23/07/09 18:53
riseofapocalypse
Io ho risolto così:
        [DllImport("user32.dll")]
        static extern bool AnimateWindow(IntPtr HWND, int time, uint flags);


        //Test Animazione
        [STAThread]
        private void button1_Click(object sender, EventArgs e)
        {
            AnimateWindow(this.Handle, 1000, AnimateWindowFlags.AW_VER_POSITIVE);

        }


        //dichiarazione uint flag

        class AnimateWindowFlags 
        {
            public static uint AW_HOR_POSITIVE = 0x00000001;
            public static uint AW_HOR_NEGATIVE = 0x00000002;
            public static uint AW_VER_POSITIVE = 0x00000004;
            public static uint AW_VER_NEGATIVE = 0x00000008;
            public static uint AW_CENTER = 0x00000010;
            public static uint AW_HIDE = 0x00010000;
            public static uint AW_ACTIVATE = 0x00020000;
            public static uint AW_SLIDE = 0x00040000;
            public static uint AW_BLEND = 0x00080000;
        }

Sostituendo l'Enum con una classe fatta di attributi pubblici statici (il risultato è lo stesso) :D
aaa
23/07/09 18:57
theprogrammer
        [DllImport("user32.dll")]
        static extern bool AnimateWindow(IntPtr HWND, uint time, AnimateWindowFlags flags);

        //Test Animazione 
        [STAThread]
        private void button1_Click(object sender, EventArgs e)
        {
            Form1 f = new Form1();
            AnimateWindow(f.Handle, 1000, AnimateWindowFlags.AW_VER_POSITIVE | AnimateWindowFlags.AW_SLIDE);
            f.Show();
        }

aaa