Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[VB6] User32.dll & BlockInput

Pagina: 1
Acties:

  • Luppie
  • Registratie: September 2001
  • Laatst online: 14-08 07:27

Luppie

www.msxinfo.net

Topicstarter
Functionaliteit : Het kunnen blokkeren van keyboard en muis om unattend in te loggen op een pc als admin en vervolgens een applicatie te installeren. Zonder dat interventie van de gebruiker mogelijk is.

Oplossing : Aan de hand van BlockInput in de user32.dll moet het mogelijk zijn om dit te doen.

Probleem : Ik heb onderstaande code gevonden en geprobeerd toe te passen in een VB6 project, echter krijg ik bij het starten van de app. de volgende melding.

Compile error : Invalid outside procedure
Deze foutmelding verwijst naar de regel BlockInput True

code:
1
2
3
4
5
Private Declare Function BlockInput Lib "user32.dll" (ByVal fBlock As Long) As Long

BlockInput True 
Sleep 10000 
BlockInput False


De code heb ik geplaatst in de General Declarations van een lege form.

Vraag : Wat doe ik fout ? Hoe kan ik deze code wel laten werken ? Is er evt. een andere oplossing om de gewenste functionaliteit te krijgen ?

Heb je iets aan mijn antwoord ? Een thumbs-up wordt zeker op prijs gesteld.


Verwijderd

Je moet Sleep nog declareren !
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

  • CodeIT
  • Registratie: Juni 2002
  • Laatst online: 12:53

CodeIT

Code IT

Je moet idd sleep nog declareren en je moet een methode/functie maken waar je de code inzet, dus bijvoorbeeld bij een form_onload.

  • Luppie
  • Registratie: September 2001
  • Laatst online: 14-08 07:27

Luppie

www.msxinfo.net

Topicstarter
Dank jullie wel, ik heb nu het volgende gedaan om het werkende te krijgen :

General Decleration :
code:
1
2
Private Declare Function BlockInput Lib "user32.dll" (ByVal fBlock As Long) As Long
Const API_TRUE=1&


form1 onload
code:
1
Call BlockInput(API_TRUE)


En het werkt, ik kan m'n keyboard en muis niet meer gebruiken. Echter de runonce setting waarin ik hem gebruikt gaat niet verder totdat dit programma gestopt is en daar ligt mijn volgende probleem | Het programma stopt niet en dat is nou eigenlijk ook de bedoeling, want de gebruiker mag niks kunnen uitvoeren.

Is er ook nog een mogelijkheid dat het programma de status "is uitgevoerd" krijgt terwijl die gewoon blijft doordraaien ?

Heb je iets aan mijn antwoord ? Een thumbs-up wordt zeker op prijs gesteld.


Verwijderd

Waarom maak je niet een appje met een commandline parameter die maar twee waarden kan hebben. On/off, True or False. En aan het begin direct na het inloggen of Runonce de input uitknalt NoInput.exe /On en na de actie NoInput.exe /Off. Dan gaat wel alles door maar de User kan nergens bij....

  • Luppie
  • Registratie: September 2001
  • Laatst online: 14-08 07:27

Luppie

www.msxinfo.net

Topicstarter
Klinkt logisch, kan je mij hierbij een beetje op weg helpen ? Of heb je een aantal handige steekworden (objecten o.i.d.) waar ik naar kan zoeken voor meer info ?

Heb je iets aan mijn antwoord ? Een thumbs-up wordt zeker op prijs gesteld.


  • muba
  • Registratie: April 2002
  • Laatst online: 19-10-2013

muba

Prince of Persia!

uhm, los het anders op: geef het programma als parameter een 1 (true) of 0 (false) en dan haal je die sleep er uit. Dus door 'blockinput.exe 1' block je de input van die user, en met 'blockinput.exe 0' schakel je het weer uit.

.edit: te laat

Tips:
gebruik de built-in variable COMMAND$
Voor mijn voorbeeld: gebruik thevalue = Val(Command$)

Voor het bovenstaande voorbeeld:
code:
1
2
if lcase(command$) = "/on" then thevalue = true
if lcase(command$) = "/off" then thevalue = false


en dan roep je die BlockInput API aan met /thevalue/

[ Voor 45% gewijzigd door muba op 23-06-2003 16:41 ]

Reporter: Mister Gandhi, what do you think of western civilisation?
Gandhi: I think it would be a good idea


  • Luppie
  • Registratie: September 2001
  • Laatst online: 14-08 07:27

Luppie

www.msxinfo.net

Topicstarter
Ik heb dit geprobeerd, maar de applicatie start op met z'n form waarin ik de command optie heb gezet. De applicatie blokkeerd de user input maar blijft actief. (Dit moet ook want als ik hem met een unload me afsluit dan is user input weer mogelijk.

Echter zolang de applicatie actief blijft gaat de runonce niet verder, wat wel zou moeten.

Is er een mogelijkheid om de status van de applicatie te veranderen waardoor de runonce wel door gaat, maar user input onmogelijk is. Is er evt. een andere oplossing ?

Heb je iets aan mijn antwoord ? Een thumbs-up wordt zeker op prijs gesteld.


  • muba
  • Registratie: April 2002
  • Laatst online: 19-10-2013

muba

Prince of Persia!

hmm, ik merkte het ook al. Maar BlockInput schijnt het hele systeem voor de opgegeven tijd te laten hangen: ik heb zelf even zo'n progje gemaakt, en een timer die in de tussentijd namelijk van 10 tot 1 had moeten tellen (1 stapje terug per seconde) trad pas in werking zodra de BlockInput weer op False werd gezet, terwijl hij had moeten beginnen nadat BlockInput op True werd gezet en voordat de Sleep werd aangeroepen. Sorry, ik kan je dus niet verder helpen en ik vraag me af of het uberhaubt wel mogelijk is.

Reporter: Mister Gandhi, what do you think of western civilisation?
Gandhi: I think it would be a good idea


  • Luppie
  • Registratie: September 2001
  • Laatst online: 14-08 07:27

Luppie

www.msxinfo.net

Topicstarter
Ik heb het nu maar anders opgelost.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Private Declare Function BlockInput Lib "user32.dll" (ByVal fBlock As Long) As Long
Const API_TRUE=1&

form1 onload
on error goto fout
Call BlockInput(API_TRUE)
shell (command$)
goto einde

:fout
Call BlockInput(API_FALSE)
msgbox("Usage: BLOCK [command or executable]")

:einde
Call BlockInput(API_FALSE)
end sub


Nu blokkeerd ie wel alles en gaat ie mijn batchfile welke ik in runonce met block heb klaargezet uitvoeren. In deze batch zit ook een reboot waarna alles gewoon weer werkt.

Bedankt voor de goede ideën

Heb je iets aan mijn antwoord ? Een thumbs-up wordt zeker op prijs gesteld.

Pagina: 1