Erkennung von Vista Starter Drei-App-Limit

9

Ich arbeite als Entwickler, der momentan eine VB6-App verwaltet, die unter Vista unbedingt funktionieren muss. Allerdings muss es unter Vista Starter Edition gut funktionieren, da ist die Version, die neue Computer hier (Argentinien) enthalten.

Nun zu den technischen Dingen: Meine App verwendet ImageMagick's Convert , um Bilder zu bearbeiten (Größenanpassung) , Schwarz-Weiß-Segmentierung, Rotation, usw.), so dass das Drei-Apps-Limit ein echter Schmerz im ... nun, irgendwo ist. Schlimmste: Der Fehler beim Ausführen von convert wird (derzeit?) Nicht erkannt. Wenn dies geschieht, legt das Programm auf.

Kann mir jemand sagen, wie:

a_ Ermitteln Sie die Anzahl der geöffneten Apps, sodass ich den Benutzer bitten kann, etwas zu schließen, bevor er es erneut versucht? Ein API-Aufruf, vielleicht? oder

b_ Erkennen, dass convert (wird derzeit mit der "Shell" -Funktion ausgeführt) wurde nicht ordnungsgemäß gestartet?

Bitte, Kommentare wie "Sie sollten Ihre App auf x migrieren" sollten an meinen Chef (nicht ich) geschickt werden, sind nicht willkommen und werden mich dazu bringen, zu Ihnen nach Hause zu reisen und sich in den Zeh zu beißen. Ich werde zwar einige Zeit brauchen, um das Visum zu bekommen, aber ich versichere Ihnen, dass eines Tages ein Fremder an Ihrer Tür klopft, Ihren StackOverflow-Benutzernamen fragt und dann wird er Ihren Zeh beißen.

Danke für Ihre Aufmerksamkeit

    
Martin 17.05.2009, 01:01
quelle

5 Antworten

0

Haben Sie versucht, den Rückgabewert der Shell-Funktion zu überprüfen? Die Dokumentation sagt, es sollte Null zurückgeben, wenn die Shell fehlschlägt.

Martin sagt in den Kommentaren : Ich habe es versucht, aber jedes Mal, wenn ich den Rückgabewert überprüfe, ist eine seltsame Zahl größer als Null.

MarkJ nochmal : Die Rückgabewerte sollen Prozess-IDs sein. Es könnte möglich sein, einen API-Aufruf durchzuführen, um zu prüfen, ob es sich um gültige Prozess-IDs handelt. Du könntest so etwas ausprobieren: das zeigt immer eine "gelungene" MsgBox für mich, da ich keine Vista Starter Edition habe:)

%Vor%     
MarkJ 17.05.2009, 18:59
quelle
4

Warum verwenden Sie nicht die ImageMagickObject COM + -Schnittstelle? Ich habe es nie benutzt, aber die Dokumentation behauptet, dass es alles, was die Befehlszeilen-Dienstprogramme können, tun kann, ohne eine zusätzliche App auszuführen.

    
Daniel Martin 17.05.2009 17:26
quelle
1

Seufzen

Missachtet, ich muss in Zukunft über die Betreffzeile hinaus lesen!

Rufen Sie GetSystemMetrics () auf und übergeben Sie SM_STARTER (a Const = 88).

%Vor%

Dies ist für XP definiert und sollte für Vista gleich sein. Einfach genug, um es zu versuchen, oder?

    
Bob 17.05.2009 02:02
quelle
0

Nicht, was Sie hören wollten, aber ich wette, dass "Starter" ausreichend leicht zu brechen ist.

Ich wette, dass so etwas funktioniert: Laden Sie den Systemdienst, nehmen Sie SE_DEBUG, gehen Sie alle Prozesse durch, patchen Sie GetSystemMetrics (0x88), um 0 im RAM zurückzugeben.

    
Joshua 17.05.2009 02:30
quelle
0

Versuchen Sie, mit createprocess anstatt über die Shell zu beginnen? Oder lassen Sie einen Dienst verwalten, während die App mit dem Dienst kommuniziert.

    
Marco van de Voort 17.05.2009 18:20
quelle

Tags und Links