WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   WSH (VBScript) - API Call.... (http://www.wcm.at/forum/showthread.php?t=144570)

renew 12.09.2004 22:00

WSH (VBScript) - API Call....
 
Ich will von einem VB Script eine API Funktion aufrufen.

Nur irgendwie bekomm ich das nicht hin....

z.B. will ich folgende Funktion verwenden und so wird sie deklariert:
Declare Function LoadCursor Lib "user32.dll" Alias "LoadCursorA" (ByVal hInstance As Long, ByVal lpCursorName As Any) As Long

Jedoch meldet der WSH beim Ausführen sofort einen Fehler.

Weiß jemand was ich falsch mache?

PS: es geht darum, den Mauszeiger auf die Sanduhr zu setzen, bzw. wenn das Script fertig ist, wieder auf den normalen Zeiger zurück zu setzen!

Biri 12.09.2004 22:46

hi !

für javascript hab ich dazu folgendes (bei www.codeproject.com) befunden:

JavaScript can be used to do some nifty client-side things, like changing the cursor. In fact, the solution is so simple, it's only about 2 lines of code.

All you need to do is to write a function like this:

function doHourglass()
{
document.body.style.cursor = 'wait';
}
Quite simple huh?

The next step is to get the web form to call that function when a post back occurs. Well, that is another very simple addition. This time, just add an event handler to your body tag in your page.

<body onbeforeunload="doHourglass();" onunload="doHourglass();">

Points of Interest
The first question you're probably asking is, "Why is there both an onbeforeunload and an onunload event handler?"
The reason for that is that if your app is being viewed in IE, it seems to prefer the onbeforeunload, whereas other browsers seem to prefer the onunload.

You might also be asking why there is no code to set the cursor back. Well, mainly because there is no need for it. As far as the browser is concerned, this is a new page, so it sets the mouse cursor back to the default pointer.

_m3 12.09.2004 23:08

@Biri: WSH != Internet Explorer

@Renew: Welchen Fehler?

Hussl 13.09.2004 08:51

Hi, hab in den Google-Groups grad folgendes gefunden:
Zitat:

Würde gerne den Mauszeiger in eine Sanduhr verwandeln, während mein VBScript
Dateien kopiert:
const vbDefault=0, vbHourglass=11
Mousepoint=vbHourglass
...
usw.
WSH meldet zwar keinen Fehler, aber ändert den Mauszeiger auch nicht.
MfG
hermann
Die Antwort:
Zitat:

Hallo Hermann,

das von Dir beobachtete Verhalten ist ziemlich logisch. Ganz kurz: WSH
besitzt keine Benutzeroberfläche! Alle Aktivitäten bzw. Eigenschaften wie
Fenster hat Fokus, Mauszeigerform etc. beziehen sich aber immer auf
Anwendungsfenster. Wenn Dein Script also abläuft, von was sollte es denn den
Mauszeiger umschalten. Im Idealfall ist noch ein Windows-Desktop zu sehen.
Nun trifft aber Windows intern Vorkehrungen, dass nicht jedes Programm mal
kurz den Mauszeiger ändern kann, sondern nur für seinen eigenen Kontext. Das
kannst Du beobachten, wenn die Sanduhr bei einem Programm erscheint. Bewegst
Du den Mauszeiger aus dem Fenster, sollte die Sanduhr verschwinden
(andernfalls ist Windows abgestürzt).

Biri 13.09.2004 22:11

oje, das WHS (Windwos Scripting Host, ich weiß, dass das nicht IE ist :)), hab ich übersehen.

fg
-hannes

renew 14.09.2004 10:11

Zitat:

Original geschrieben von Biri
oje, das WHS (Windwos Scripting Host, ich weiß, dass das nicht IE ist :)), hab ich übersehen.

fg
-hannes

Naja, VBScript auf einer Website für Client-Side Scripts zu verwenden is ja eine Totsünde - oder? :D ;)

@_m3
Sorry, hat ein bissl gedauert, da ich gestern ehrlich gesagt, vergessen habe.
Fehler ist der "Standard-WSH-Fehler":
Zitat:

Skript: ...\Desktop\outlook.vbs
Zeile: 1
Zeichen: 9
Fehler: Syntaxfehler
Code: 800A03EA
Quelle: Kompilierungsfehler in Microsoft VBScript
Und Zeile 1 ist natürlich die Deklaration der API Funktion.

Aber mich interessierts immer noch, wie ich aus VBS eine API Funktion aufrufen kann! (egal ob man damit jetzt das Problem lösen kann od. nicht ;))

@Hussl
Danke.
Das heißt wahrscheinlich ich könnte den Mauszeiger gar nicht verändern, weil Windows das unterbindet.
Den Code den du gepostet hast hab ich auch schon probiert - mit dem gleichen Ergebnis.

Hmm, evt. sollt ich eine Anwendung aus dem Ding machen. (VB 6.0 od VB.NET?!)
Nur hätt ich da gleich eine viel bessere Idee: Nämlich die Sanduhr soll während eines Kopiervorgangs übers Netzwerk angezeigt werden.
Da wärs ja viel besser ich hätt einen Progress-Bar.
Nur wie bekomm ich mit, wie weit der Kopiervorgang schon ist, um den Progressbar mit den richtigen Daten zu befüllen.....?

Hussl 14.09.2004 10:35

API-Funktionen lassen sich IMHO nicht von VBS aus aufrufen. Dazu müsste man ein VB-Prog schreiben, um es dann von da aus in VBS zu verwenden.

renew 14.09.2004 11:19

Zitat:

Original geschrieben von Hussl
API-Funktionen lassen sich IMHO nicht von VBS aus aufrufen. Dazu müsste man ein VB-Prog schreiben, um es dann von da aus in VBS zu verwenden.
Naja, da kann ich dann gleich bei dem VB Programm bleiben.

Weil in meinem Fall würde es keinen Sinn machen, ein selbst geschriebenes Programm mit VBS zu steuern. ;)

Aber danke, ich hab mir sowas schon fast gedacht, aber war aber absolut nicht sicher.

Biri 14.09.2004 13:32

Zitat:

Naja, VBScript auf einer Website für Client-Side Scripts zu verwenden is ja eine Totsünde - oder?
stimmt, wenns wo anders außer am IE funktionieren soll. :)


Alle Zeitangaben in WEZ +2. Es ist jetzt 01:11 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag