Script op .exe programma met verschillende logins

Pagina: 1
Acties:

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

  • Thagreenstuff
  • Registratie: Januari 2013
  • Laatst online: 07-02 10:27
Allereerst, ik ben geen IT'er, maar vind het wel ontzettend interessant en zie hier altijd kansen in om processen te optimaliseren. Nu wil ik zelf meer leren over scripting, en heb ik het geluk direct een live voorbeeld te hebben. Ik hoop dat jullie / iemand mij hierbij kan helpen. :)

Mijn uitdaging
Ik wil een script schrijven om toe te passen op een .exe-file. Dit programma gaat gepaard met een (1) hoofdgebruiker (2) subuser en een (3) wachtwoord. Hier heb ik ongeveer 30 verschillende hoofdgebruikers van, welke ik eigenlijk allemaal op wil nemen hierin. (Dus 30 keer inloggen en onderstaand proces per login uitvoeren, en hierna naar de volgende gaan).

Wanneer het programma is ingelogd, zjin er 2 opties, waarbij de eerste mijn grootste favoriet is qua resultaat.

1. Wanneer het programma is ingelogd wil ik dat er in het programma wordt genavigeerd via bepaalde menu's en deze een screenshot neemt en in een doelmap opslaat.
2. Wanneer het programma is ingelogd wil ik dat er in het programma wordt genavigeerd via bepaalde menu's en hierna op een PDF-knop klikt en deze in een doelmap opslaat.


Relevante software en hardware die ik gebruik
Windows 7

Wie oh wie kan mij hierbij helpen? Alvast bedankt voor de reactie(s)! _/-\o_ _/-\o_

Beste antwoord (via Thagreenstuff op 28-03-2017 12:05)


  • McKaamos
  • Registratie: Maart 2002
  • Niet online

McKaamos

Master of the Edit-button

Okay, dus je wil in essentie een GUI automatiseren?
C.q. volgens een script user input geven aan een bepaald programma? Doen alsof je script de gebruiker is die op het toetsenbord/muis zit te rammen?

Dan heb je daar twee opties voor:
AutoHotKey
AutoIT

Wat je lijkt te willen doen is als volgt:
- Programma starten
- Proces ID onthouden
- De window bij dat Proces ID naar de voorgrond trekken
- Bepalen welke knoppen en inputvelden er staan
- Inputvelden invullen en knoppen drukken
- Screenshot maken of PDFje opslaan
- En dat eventueel in een cirkeltje blijven doen tot je voldoende screenshots/PDF's hebt.

Zowel AutoIT als AutoHotKey zijn voor dit soort dingen uitermate geschikt.
Betekent echter wel dat je zelf zal moeten gaan scripten.
AutoIT is een dialect op Visual Basic en daarmee ook vrij simpel te leren en kent erg veel randzaken die VB ook kent. Plus, de ingebouwde help functie van de editor (Scite4AutoIT) staat stijf van de voorbeelden.
AHK heb ik eigenlijk niet echt ervaring mee, maar dat moet soortgelijk zijn.

Het Run-As verhaal gaat eigenlijk alleen op voor Windows' eigen gebruikers en/of beheerdersaccount. Dat haal ik eigenlijk niet uit je startpost.
Klopt het als ik er uit haal dat het programma zélf een login vertoont?
GH45T schreef op maandag 27 maart 2017 @ 23:03:
Kan het niet helemaal uit je startpost opmaken, maar volgens mij bedoel je geen Windows users als ik het goed begrijp.

Je zou eens met een cmd commando naar de directory kunnen browsen en daar de .exe kunnen aanroepen met /? Of --help erachter. Wellicht zitten er commandline opties in het programma en kun je daarmee een mooie oplpssing in een script zetten.

Anders kun je eens naar autoit kijken. Daarmee kun je handelingen opnemen en daarna automatisch laten uitvoeren. Het is soms wat gepiel maar als iets standaard niet is te automatiseren lukg het met autoit vaak alsnog.
Opnemen met AU3 Recorder is best wel naadje hoor.
De resultaten daar van zijn verre van betrouwbaar. Hij geeft je nog veel te vaak schermcoordinaten ipv handles.
Neemt niet weg dat AutoIT een geniale tool is voor automatiseren van dit soort dingen.
Als advies zou ik zeggen dat je de AutoIT InfoWindow gebruikt om de button handles te achterhalen en ze op basis daar van aan te klikken. Dat lukt de recorder eigenlijk bijna nooit, maar is veel betrouwbaarder.

[ Voor 61% gewijzigd door McKaamos op 27-03-2017 23:25 ]

Iemand een Tina2 in de aanbieding?

Alle reacties


Acties:
  • +1 Henk 'm!

  • consolefreak
  • Registratie: November 2002
  • Laatst online: 12:04
de tip hierbij: het runas commando ;-)

Acties:
  • 0 Henk 'm!

  • Thagreenstuff
  • Registratie: Januari 2013
  • Laatst online: 07-02 10:27
@consolefreak
consolefreak schreef op maandag 27 maart 2017 @ 18:03:
de tip hierbij: het runas commando ;-)
Bedankt, zit me er nu al volop op in te lezen. Zal ongetwijfeld wel even puzzelen zijn om het voor elkaar te krijgen.

Heb je misschien een voorbeeld hoe zo'n regel eruit ziet wanneer je een programma wilt openen met een username, gevolgd door een subuser en password?

[ Voor 23% gewijzigd door Thagreenstuff op 28-03-2017 12:13 ]


Acties:
  • 0 Henk 'm!

  • Thagreenstuff
  • Registratie: Januari 2013
  • Laatst online: 07-02 10:27
Volgens mij gaat het met het Runas command niet werken. Ik moet inloggen op verschillende accounts, zoals ik het tot nu toe kan vinden kan dit alleen met bepaalde software waar ik niet naar op zoek ben. Ik dacht eigenlijk dat zoiets heel veel werd gebruikt?

Acties:
  • +2 Henk 'm!

  • GH45T
  • Registratie: November 2003
  • Laatst online: 24-09 23:48
Kan het niet helemaal uit je startpost opmaken, maar volgens mij bedoel je geen Windows users als ik het goed begrijp.

Je zou eens met een cmd commando naar de directory kunnen browsen en daar de .exe kunnen aanroepen met /? Of --help erachter. Wellicht zitten er commandline opties in het programma en kun je daarmee een mooie oplpssing in een script zetten.

Anders kun je eens naar autoit kijken. Daarmee kun je handelingen opnemen en daarna automatisch laten uitvoeren. Het is soms wat gepiel maar als iets standaard niet is te automatiseren lukg het met autoit vaak alsnog.

Acties:
  • Beste antwoord
  • +1 Henk 'm!

  • McKaamos
  • Registratie: Maart 2002
  • Niet online

McKaamos

Master of the Edit-button

Okay, dus je wil in essentie een GUI automatiseren?
C.q. volgens een script user input geven aan een bepaald programma? Doen alsof je script de gebruiker is die op het toetsenbord/muis zit te rammen?

Dan heb je daar twee opties voor:
AutoHotKey
AutoIT

Wat je lijkt te willen doen is als volgt:
- Programma starten
- Proces ID onthouden
- De window bij dat Proces ID naar de voorgrond trekken
- Bepalen welke knoppen en inputvelden er staan
- Inputvelden invullen en knoppen drukken
- Screenshot maken of PDFje opslaan
- En dat eventueel in een cirkeltje blijven doen tot je voldoende screenshots/PDF's hebt.

Zowel AutoIT als AutoHotKey zijn voor dit soort dingen uitermate geschikt.
Betekent echter wel dat je zelf zal moeten gaan scripten.
AutoIT is een dialect op Visual Basic en daarmee ook vrij simpel te leren en kent erg veel randzaken die VB ook kent. Plus, de ingebouwde help functie van de editor (Scite4AutoIT) staat stijf van de voorbeelden.
AHK heb ik eigenlijk niet echt ervaring mee, maar dat moet soortgelijk zijn.

Het Run-As verhaal gaat eigenlijk alleen op voor Windows' eigen gebruikers en/of beheerdersaccount. Dat haal ik eigenlijk niet uit je startpost.
Klopt het als ik er uit haal dat het programma zélf een login vertoont?
GH45T schreef op maandag 27 maart 2017 @ 23:03:
Kan het niet helemaal uit je startpost opmaken, maar volgens mij bedoel je geen Windows users als ik het goed begrijp.

Je zou eens met een cmd commando naar de directory kunnen browsen en daar de .exe kunnen aanroepen met /? Of --help erachter. Wellicht zitten er commandline opties in het programma en kun je daarmee een mooie oplpssing in een script zetten.

Anders kun je eens naar autoit kijken. Daarmee kun je handelingen opnemen en daarna automatisch laten uitvoeren. Het is soms wat gepiel maar als iets standaard niet is te automatiseren lukg het met autoit vaak alsnog.
Opnemen met AU3 Recorder is best wel naadje hoor.
De resultaten daar van zijn verre van betrouwbaar. Hij geeft je nog veel te vaak schermcoordinaten ipv handles.
Neemt niet weg dat AutoIT een geniale tool is voor automatiseren van dit soort dingen.
Als advies zou ik zeggen dat je de AutoIT InfoWindow gebruikt om de button handles te achterhalen en ze op basis daar van aan te klikken. Dat lukt de recorder eigenlijk bijna nooit, maar is veel betrouwbaarder.

[ Voor 61% gewijzigd door McKaamos op 27-03-2017 23:25 ]

Iemand een Tina2 in de aanbieding?


Acties:
  • 0 Henk 'm!

  • Thagreenstuff
  • Registratie: Januari 2013
  • Laatst online: 07-02 10:27
@GH45T
GH45T schreef op maandag 27 maart 2017 @ 23:03:
Kan het niet helemaal uit je startpost opmaken, maar volgens mij bedoel je geen Windows users als ik het goed begrijp.

Je zou eens met een cmd commando naar de directory kunnen browsen en daar de .exe kunnen aanroepen met /? Of --help erachter. Wellicht zitten er commandline opties in het programma en kun je daarmee een mooie oplpssing in een script zetten.

Anders kun je eens naar autoit kijken. Daarmee kun je handelingen opnemen en daarna automatisch laten uitvoeren. Het is soms wat gepiel maar als iets standaard niet is te automatiseren lukg het met autoit vaak alsnog.
Klopt, het gaat niet om een Windows user.

Het CMD zelf is een mooie tool maar ik denk niet dat dit een oplossing gaat bieden. Het programma heeft een vrij ingewikkelde structuur verder dus als ik het zo lees denk ik dat AutoIT een beter resultaat zal geven.
Ik ga mezelf erin verdiepen. Bedankt! d:)b

Acties:
  • 0 Henk 'm!

  • Thagreenstuff
  • Registratie: Januari 2013
  • Laatst online: 07-02 10:27
@McKaamos

Super, precies wat je zegt inderdaad: ik wil een GUI automatiseren en doen alsof het script de gebruiker is die op het toetsenbord/muis zit te rammen. Perfecte omschrijving. ;)

Ik ga me verdiepen in AutoIT, dit lijkt mij een mooi begin als ik de reacties zo lees. Ook jouw aanbeveling voor de editor Scite4AutoIT zal ik in het achterhoofd houden, zeker zo´n n00b als ik ben daar ontzettend mee geholpen.
McKaamos schreef op maandag 27 maart 2017 @ 23:09:
Opnemen met AU3 Recorder is best wel naadje hoor.
De resultaten daar van zijn verre van betrouwbaar. Hij geeft je nog veel te vaak schermcoordinaten ipv handles.
Neemt niet weg dat AutoIT een geniale tool is voor automatiseren van dit soort dingen.
Als advies zou ik zeggen dat je de AutoIT InfoWindow gebruikt om de button handles te achterhalen en ze op basis daar van aan te klikken. Dat lukt de recorder eigenlijk bijna nooit, maar is veel betrouwbaarder.
Jouw reactie over AU3 Recorder snap ik alleen niet zo?

In ieder geval, bedankt voor je hulp! _/-\o_ oOo

Acties:
  • 0 Henk 'm!

  • Thagreenstuff
  • Registratie: Januari 2013
  • Laatst online: 07-02 10:27
Mocht een lotgenoot hiermee geholpen zijn, ik heb ook Sikuli gevonden wat een helpende hand kan bieden.

Acties:
  • +1 Henk 'm!

  • McKaamos
  • Registratie: Maart 2002
  • Niet online

McKaamos

Master of the Edit-button

Thagreenstuff schreef op dinsdag 28 maart 2017 @ 12:13:
@McKaamos

Super, precies wat je zegt inderdaad: ik wil een GUI automatiseren en doen alsof het script de gebruiker is die op het toetsenbord/muis zit te rammen. Perfecte omschrijving. ;)

Ik ga me verdiepen in AutoIT, dit lijkt mij een mooi begin als ik de reacties zo lees. Ook jouw aanbeveling voor de editor Scite4AutoIT zal ik in het achterhoofd houden, zeker zo´n n00b als ik ben daar ontzettend mee geholpen.


[...]


Jouw reactie over AU3 Recorder snap ik alleen niet zo?

In ieder geval, bedankt voor je hulp! _/-\o_ oOo
AU3Recorder is een extra tool die je kan gebruiken bij AutoIT om scripts te maken.
Je start de tool, klikt op Record en gaat dan aan de slag om precies dat te doen wat je wil automatiseren.
De tool houdt dan bij waar je klikt, welke toetsen je indrukt en dergelijke dingen.
Echter, niet alle programma's lenen zich voor gebruik met AU3Recorder.
Wat je wil, is dat hij bijhoudt wat de 'handle' is van een knop (of menu item, of invoervakje, etc) die je op je scherm ziet. Dat is de 'code' waarmee die knop wordt geidentificeerd, zodat je kan zeggen "simuleer een muisklik op de knop die wordt geidentificeerd door deze code".
Echter, wat AU3Recorder vaak doet, is dat hij niet de handle te pakken krijgt, maar gewoon een pixel coordinaat op je scherm onthoudt. Dus b.v. "muisklik op pixel coordinaat 400 vanaf de bovenkant van het beelscherm en 800 vanaf de linkerkant van het beeldscherm".

Stel nu dat het venster van het te automatiseren programma verschoven is, of spontaan volledig scherm is in plaats van een klein window, dan klopt dat coordinaat dus niet.
Daarom wil je een handle hebben, want die is niet afhankelijk van een fysieke lokatie, maar slechts van de daadwerkelijke aanwezigheid, ongeacht waar het knopje staat.

Dat is wat lastiger om te verwezenlijken, omdat je dus moet scripten en niet puur de output van AU3Recorder kan draaien.
Het is wel veel robuuster. Je kan het op elk schermformaat uitvoeren en in elke versie van Windows.
De dikte van de Startbalk wisselt namelijk, als voorbeeld. Zeker met Windows 10 waarbij het zoomnivo van Windows zelf afhankelijk is van schermformaat (in inches). Windows gaat naar een hoger zoomnivo als je een hoge resolutie op een klein scherm hebt.
Zelfde voor Windows 7, maar dan afhankelijk van of je de Aero interface gebruikt of bijvoorbeeld de Classic Theme (Windows 2000 en ouder look).
De OK knop die dan b.v. rechts onderin staat, is dan spontaan 50 pixels hoger geplaatst en dan werkt een script wat is gegenereerd door AU3Recorder niet.

[ Voor 3% gewijzigd door McKaamos op 28-03-2017 20:45 ]

Iemand een Tina2 in de aanbieding?

Pagina: 1