Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - EntryPoint delle maggiori librerie di Sistema
Forum - C# / VB.NET - EntryPoint delle maggiori librerie di Sistema

Avatar
Thejuster (Admin)
Guru^2


Messaggi: 2298
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 13:43
Giovedì, 23/07/2009
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.



https://mire.forumfree.it/ - Mire Engine
C# UI Designer
PM Quote
Avatar
riseofapocalypse (Ex-Member)
Pro


Messaggi: 150
Iscritto: 08/07/2009

Segnala al moderatore
Postato alle 14:04
Giovedì, 23/07/2009
Intendi come dichiarare le funzioni API nei tuoi programmi?

PM Quote
Avatar
Thejuster (Admin)
Guru^2


Messaggi: 2298
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 14:20
Giovedì, 23/07/2009
No,
Intendo una lista degli argomenti su cui Accedere.
Del tipo faccio un esempio

Codice sorgente - presumibilmente C#

  1. [DllImport("user32.dll", EntryPoint="MessageBox")]
  2. 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.


https://mire.forumfree.it/ - Mire Engine
C# UI Designer
PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 14:39
Giovedì, 23/07/2009
Testo quotato

Postato originariamente da Thejuster:

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

Codice sorgente - presumibilmente C#

  1. [DllImport("user32.dll", EntryPoint="MessageBox")]
  2. 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

http://msdn.microsoft.com/en-us/library/ms645505%28VS.85%2 ...

PM Quote
Avatar
Thejuster (Admin)
Guru^2


Messaggi: 2298
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 15:06
Giovedì, 23/07/2009
Grazie mille proprio quello che cercavo :k:


https://mire.forumfree.it/ - Mire Engine
C# UI Designer
PM Quote
Avatar
Thejuster (Admin)
Guru^2


Messaggi: 2298
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 20:15
Giovedì, 23/07/2009
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


Codice sorgente - presumibilmente C#

  1. [DllImport("user32.dll")]
  2. static extern bool AnimateWindow(IntPtr HWND, int time, AnimateWindowFlags flags);
  3.  
  4.  
  5. //Test Animazione
  6.  [STAThread]
  7.         private void button1_Click(object sender, EventArgs e)
  8.         {
  9.             AnimateWindow(this.Handle, 1000, (uint) AnimateWindowFlags.AW_VER_NEGATIVE);
  10.  
  11.         }
  12.  
  13.  
  14. //dichiarazione uint flag
  15.  
  16. enum AnimateWindowFlags : uint
  17.         {
  18.             AW_HOR_POSITIVE = 0x00000001,
  19.             AW_HOR_NEGATIVE = 0x00000002,
  20.             AW_VER_POSITIVE = 0x00000004,
  21.             AW_VER_NEGATIVE = 0x00000008,
  22.             AW_CENTER = 0x00000010,
  23.             AW_HIDE = 0x00010000,
  24.             AW_ACTIVATE = 0x00020000,
  25.             AW_SLIDE = 0x00040000,
  26.             AW_BLEND = 0x00080000
  27.         }


Ultima modifica effettuata da Thejuster il 23/07/2009 alle 20:19


https://mire.forumfree.it/ - Mire Engine
C# UI Designer
PM Quote
Avatar
riseofapocalypse (Ex-Member)
Pro


Messaggi: 150
Iscritto: 08/07/2009

Segnala al moderatore
Postato alle 20:53
Giovedì, 23/07/2009
Io ho risolto così:
Codice sorgente - presumibilmente C#

  1. [DllImport("user32.dll")]
  2.         static extern bool AnimateWindow(IntPtr HWND, int time, uint flags);
  3.  
  4.  
  5.         //Test Animazione
  6.         [STAThread]
  7.         private void button1_Click(object sender, EventArgs e)
  8.         {
  9.             AnimateWindow(this.Handle, 1000, AnimateWindowFlags.AW_VER_POSITIVE);
  10.  
  11.         }
  12.  
  13.  
  14.         //dichiarazione uint flag
  15.  
  16.         class AnimateWindowFlags
  17.         {
  18.             public static uint AW_HOR_POSITIVE = 0x00000001;
  19.             public static uint AW_HOR_NEGATIVE = 0x00000002;
  20.             public static uint AW_VER_POSITIVE = 0x00000004;
  21.             public static uint AW_VER_NEGATIVE = 0x00000008;
  22.             public static uint AW_CENTER = 0x00000010;
  23.             public static uint AW_HIDE = 0x00010000;
  24.             public static uint AW_ACTIVATE = 0x00020000;
  25.             public static uint AW_SLIDE = 0x00040000;
  26.             public static uint AW_BLEND = 0x00080000;
  27.         }


Sostituendo l'Enum con una classe fatta di attributi pubblici statici (il risultato è lo stesso) :D

PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 20:57
Giovedì, 23/07/2009
Codice sorgente - presumibilmente C#

  1. [DllImport("user32.dll")]
  2.         static extern bool AnimateWindow(IntPtr HWND, uint time, AnimateWindowFlags flags);
  3.  
  4.         //Test Animazione
  5.         [STAThread]
  6.         private void button1_Click(object sender, EventArgs e)
  7.         {
  8.             Form1 f = new Form1();
  9.             AnimateWindow(f.Handle, 1000, AnimateWindowFlags.AW_VER_POSITIVE | AnimateWindowFlags.AW_SLIDE);
  10.             f.Show();
  11.         }


PM Quote
Avatar
Thejuster (Admin)
Guru^2


Messaggi: 2298
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 8:48
Venerdì, 24/07/2009
Grandioso ho avuto l'effetto che volevo grazie mille a tutti :D




Testo quotato

Postato originariamente da riseofapocalypse:

Io ho risolto così:
Codice sorgente - presumibilmente C#

  1. [DllImport("user32.dll")]
  2.         static extern bool AnimateWindow(IntPtr HWND, int time, uint flags);
  3.  
  4.  
  5.         //Test Animazione
  6.         [STAThread]
  7.         private void button1_Click(object sender, EventArgs e)
  8.         {
  9.             AnimateWindow(this.Handle, 1000, AnimateWindowFlags.AW_VER_POSITIVE);
  10.  
  11.         }
  12.  
  13.  
  14.         //dichiarazione uint flag
  15.  
  16.         class AnimateWindowFlags
  17.         {
  18.             public static uint AW_HOR_POSITIVE = 0x00000001;
  19.             public static uint AW_HOR_NEGATIVE = 0x00000002;
  20.             public static uint AW_VER_POSITIVE = 0x00000004;
  21.             public static uint AW_VER_NEGATIVE = 0x00000008;
  22.             public static uint AW_CENTER = 0x00000010;
  23.             public static uint AW_HIDE = 0x00010000;
  24.             public static uint AW_ACTIVATE = 0x00020000;
  25.             public static uint AW_SLIDE = 0x00040000;
  26.             public static uint AW_BLEND = 0x00080000;
  27.         }


Sostituendo l'Enum con una classe fatta di attributi pubblici statici (il risultato è lo stesso) :D



si può anche fare ma credo che sia meglio un enum
ho risolto inserendo una semplicissima funzione al momento del richiamo dell'enum


Anzichè

Codice sorgente - presumibilmente Plain Text

  1. AnimateWindow(this.Handle, 1000, AnimateWindowFlags.AW_VER_POSITIVE |AnimateWindowFlags.AW_SLIDE);



basta fare

Codice sorgente - presumibilmente Plain Text

  1. AnimateWindow(this.Handle, 1000, (uint) AnimateWindowFlags.AW_VER_POSITIVE | (uint) AnimateWindowFlags.AW_SLIDE);



Magari aggiungendo anche l'attributo [Flag] prima degli enum.

per il resto. Grazie mille per l'aiuto :k:

Ultima modifica effettuata da Thejuster il 24/07/2009 alle 8:51


https://mire.forumfree.it/ - Mire Engine
C# UI Designer
PM Quote