WinFuture-Forum.de: Api-aufrufe In Vb .net - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Api-aufrufe In Vb .net


#1 Mitglied ist offline   2Black 

  • Gruppe: aktive Mitglieder
  • Beiträge: 473
  • Beigetreten: 09. Juni 06
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Aalen

  geschrieben 07. August 2006 - 23:53

Hi Leute...

Ich bin im Moment beim umsteigen von Visual Basic 6 auf Visual Basic .net (VS2005). Eigentlich hab ich mich schnell ins .net eingelebt, nur wie man API-Aufrufe in VB .net tätigt bleibt mir ein Rätsel, komm einfach nicht dahinter, wie das gehen soll. Jeder kennt doch die Sleep-API, das ist meiner Meinung nach die einfachste API...

PrivateDeclareSub Sleep Lib"kernel32"Alias"Sleep" (ByVal dwMilliseconds AsLong)

Deshalb hab ich mich entschieden diese zu Testzwecken aufzubauen - obwohl es ja via System.Threading.Thread.Sleep hätte gehen können...

Der Aufruf scheiterte mit nem Fehler, der zweite Versuch mit dem Code hier aber auch:

<DllImport("kernel32.dll", EntryPoint:="Sleep")> PublicSharedSub Sleep(ByVal dwMilliseconds AsLong)
EndSub

Und hier noch der Fehlertext:

Ein Aufruf an die PInvoke-Funktion "Test!Test.Form1::Sleep" hat das Gleichgewicht des Stapels gestört. Wahrscheinlich stimmt die verwaltete PInvoke-Signatur nicht mit der nicht verwalteten Zielsignatur überein. Überprüfen Sie, ob die Aufrufkonvention und die Parameter der PInvoke-Signatur mit der nicht verwalteten Zielsignatur übereinstimmen.

Wie muss den nun der Sleep API Aufruf aussehen, dass er auch funktioniert?

Wäre für jede Hilfe dankbar. Google verwirrt mich immer mehr und ich komm einfach nicht drauf, wie das gehen soll :blink: Ein Kumpel von mir meinte ich soll mich jetzt einfach an euch wenden, bevor ich noch morgen probierend dran sitze :blink:

Gruß, Michi

Dieser Beitrag wurde von 2Black bearbeitet: 07. August 2006 - 23:55

0

Anzeige



#2 Mitglied ist offline   Rika 

  • Gruppe: aktive Mitglieder
  • Beiträge: 11.533
  • Beigetreten: 11. Juni 03
  • Reputation: 2
  • Geschlecht:Männlich

geschrieben 08. August 2006 - 00:14

Mach mal das "Shared" weg.
Konnichiwa. Manga wo shitte masu ka? Iie? Gomenne, sonoyouna koto ga tabitabi arimasu. Mangaka ojousan nihongo doujinshi desu wa 'Clamp X', 'Ayashi no Ceres', 'Card Captor Sakura', 'Tsubasa', 'Chobits', 'Sakura Taisen', 'Inuyasha' wo 'Ah! Megamisama'. Hai, mangaka gozaimashita desu ni yuujin yori.
Eingefügtes Bild
Ja, mata ne!

(For sending email please use OpenPGP encryption and signing. KeyID: 0xA0E28D18)
0

#3 Mitglied ist offline   2Black 

  • Gruppe: aktive Mitglieder
  • Beiträge: 473
  • Beigetreten: 09. Juni 06
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Aalen

geschrieben 08. August 2006 - 00:48

Ja, das hab ich auch schon probiert, nur dann kann er garnicht erst kompilieren & ausführen :blink:



System.Runtime.InteropServices.DllImportAttribute kann nicht auf eine Instanzenmethode angewendet werden.
0

#4 Mitglied ist offline   2Black 

  • Gruppe: aktive Mitglieder
  • Beiträge: 473
  • Beigetreten: 09. Juni 06
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Aalen

geschrieben 09. August 2006 - 12:22

Keiner ne Idee wie lediglich die Sleep-API in VB .net auszusehen hat?, das würd mir schon helfen ;)
0

#5 _MagicAndre1981_

  • Gruppe: Gäste

geschrieben 09. August 2006 - 12:46

Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Integer)


Quelle: http://www.pinvoke.n.../kernel32.Sleep

Die Seite ist der Anlaufpunkt Nr1 für API-Calls unter .NET ;) ;)
0

#6 Mitglied ist offline   2Black 

  • Gruppe: aktive Mitglieder
  • Beiträge: 473
  • Beigetreten: 09. Juni 06
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Aalen

geschrieben 09. August 2006 - 12:58

Wäre ich nie draufgekommen, dem VB .net stört das Long, mit Integer gehts, komisch.

Nur die Frage ist, warum muss dwMilliseconds jetzt aufeinmal vom Typ Integer sein muss und nicht vom Typ Long, immerhin stehts im alten VB6 API-Viewer mit dem Typ Long ;) . Im Internet stehts auch meistens mit Typ Long...



Aber recht herzlichen Dank für den Link, sehe jetzt schon, dass die Seite Gold Wert sein wird ;)
0

#7 _MagicAndre1981_

  • Gruppe: Gäste

geschrieben 09. August 2006 - 13:08

DWORD = DoubleWORD = 2 * WORD = 32Bit und long ist 64 Bit ;)

Zitat

Da DWORD eine 4-Byte-Ganzzahl (Integer) ist, würden wir entweder int oder uint als C#-Entsprechung verwenden. Da int ein CLS-kompatibler Typ ist (und somit von allen .NET-Sprachen verwendet werden kann), wird diese Version häufiger verwendet als uint.


http://www.microsoft.com/germany/msdn/libr...n.mspx?mfr=true
0

#8 Mitglied ist offline   2Black 

  • Gruppe: aktive Mitglieder
  • Beiträge: 473
  • Beigetreten: 09. Juni 06
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Aalen

geschrieben 09. August 2006 - 13:46

Okay, alles verstanden ;) Danke für die Hilfe! ;)
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0