Applicatie sluiten VBScript

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Lunoah
  • Registratie: Januari 2004
  • Laatst online: 23-06-2023
Hoi,

Ik heb een script gemaakt wat inhaakt op een bestaande applicatie.
De bestaande applicatie schrijft data weg naar een tekstbestand.
na het uitvoeren van het script moet hij het tekstbestand leegmaken om dubbele registraties te voorkomen.

Nu is het probleem dat de applicatie indien actief het tekstbestand locked. Daardoor kan ik hem dus niet wissen.

op een zeer onprofessionele manier heb ik het nu zo opgelost :

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colProcessList = objWMIService.ExecQuery _
    ("Select * from Win32_Process Where Name = 'smsenabler.exe'")

For Each objProcess in colProcessList
    objProcess.Terminate()
Next

'-------------------------------------------- Pauze

WScript.Sleep 5000

'-------------------------------------------- Maak bronbestand leeg
Const FOR_WRITING = 2
strFileName = "C:\SMS\messages.txt"

Set objFS = CreateObject("Scripting.FileSystemObject")
Set objTS = objFS.OpenTextFile(strFileName, FOR_WRITING)

'-------------------------------------------- Pauze

WScript.Sleep 5000

'-------------------------------------------- Start SMS Enabler

Dim WSHShell
Set WSHShell = WScript.CreateObject("WScript.Shell")

WSHShell.Run("""%ProgramFiles%\SMSENABLER.com\SMS Enabler\smsenabler.exe""")

'--------------------------------------------- Close All


Nadeel is dat ik de taskbar een opstappeling komt van icoontjes (muis eroverheen en ze zijn weg).
kan ik dat voorkomen of is er een andere manier?

Ik heb met de ontwikkelaar gesproken en die zegt dat het niet kan en werkt niet echt mee om zijn applicatie te verbeteren.

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
kan ik dat voorkomen of is er een andere manier?
Het proces niet lomp onderuittrappen met een .Terminate() :X
Ik heb met de ontwikkelaar gesproken en die zegt dat het niet kan en werkt niet echt mee om zijn applicatie te verbeteren.
Hop, volgende applicatie en deze droppen :w

Wat pragmatischer (maar nog lelijker): misschien dat je met wat toetscombinaties en wat sendkeys magic de applicatie "netjes" kunt afsluiten of eens kijken of je 't wel voor elkaar krijgt met iets als AutoIT ofzo.

[ Voor 71% gewijzigd door RobIII op 31-10-2012 09:47 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • ZaZ
  • Registratie: Oktober 2002
  • Laatst online: 26-06 00:23

ZaZ

Tweakers abonnee

Sendkeys werkt dacht ik (godzijdank) niet meer sinds Vista zonder een zooi hacks waar je de Win API voor nodig hebt.
En als je die dan toch nodig hebt:
Er bestaan zover ik weet verscheidene wrappers voor VBS om de Windows API.
Daarmee zou je het main window kunnen vinden met bijv FindWindow en daar een WM_CLOSE naartoe kunnen zenden.
Als je het iets netter wilt doen (vraag ik mij af met dit soort acties in VBS) dan eerst WM_QUERYENDSESSION en WM_ENDSESSION zenden met de lParam op ENDSESSION_CLOSEAPP
Dat alles doe je met SendMessage.

Of gewoon switchen naar iets anders natuurlijk

Lekker op de bank


Acties:
  • 0 Henk 'm!

  • evolution536
  • Registratie: Maart 2009
  • Laatst online: 05-06-2024

evolution536

besh besh

In de Windows API is er een functie genaamd ExitProcess. Deze gebruik ik ook altijd om een MASM32 assembly programma af te sluiten. Wellicht dat deze werkt?

Acties:
  • 0 Henk 'm!

  • ZaZ
  • Registratie: Oktober 2002
  • Laatst online: 26-06 00:23

ZaZ

Tweakers abonnee

Daarmee sluit je je eigen programma, in dit geval dan dus de scripting host

Lekker op de bank


Acties:
  • 0 Henk 'm!

  • Lunoah
  • Registratie: Januari 2004
  • Laatst online: 23-06-2023
Het stomme is dat er in de applicatie een ''start'' en ''stop'' knop zit. Hoe moeilijk kan het zijn dit van buitenaf aan te spreken.. ik ga de ontwikkelaar maar weer eens achterna zitten.

Allen bedankt voor de reacties.
Pagina: 1