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

[VB6] Detect proces-start

Pagina: 1
Acties:
  • 135 views sinds 30-01-2008
  • Reageer

  • wallywally
  • Registratie: Maart 2004
  • Laatst online: 29-11 21:04
Hallo. Ik ben bezig om een tool te schrijven waarbij ik processen kan freezen en dus ook weer kan resumen. Dit heb ik redelijk voor elkaar. Werkt goed, kan elk proces stop zetten en verder laten gaan wanneer ik wil. Dit dmv windows API's.

Nu is het alleen zo dat ik wil weten wanneer er een nieuw proces start (shell.dll regelt dit?). Op dit moment heb ik het in de tool ingebouwd dat hij met een timer (interval 250) de proceslist bekijkt en alert wanneer er een nieuw proces bij komt. Dit vreet alleen nogal veel CPU/RAM power, die timer laten lopen is dus niet echt een nette oplossing hiervoor.

Nu ben ik dus op zoek naar een API die kan zien wanneer er een nieuw proces opgestart wordt zodat ik die timer eruit kan gooien.

Ik heb half google al afgezocht naar iets dergelijks maar kan eigenlijk niet echt iets vinden wat hier op lijkt. Het is toch zo dat Shell.dll de executes uitvoert? Ik zou dan haast denken dat ik die api dus daar in moet zoeken.. tot op heden nog niets gevonden.

Iemand ideeen wat ik zou kunnen proberen zodat ik iig die klotige timer eruit kan halen?

Alvast bedankt.

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
wallywally schreef op woensdag 08 augustus 2007 @ 11:21:
Nu is het alleen zo dat ik wil weten wanneer er een nieuw proces start (shell.dll regelt dit?). Op dit moment heb ik het in de tool ingebouwd dat hij met een timer (interval 250) de proceslist bekijkt en alert wanneer er een nieuw proces bij komt. Dit vreet alleen nogal veel CPU/RAM power, die timer laten lopen is dus niet echt een nette oplossing hiervoor.
Moet je echt binnen een kwart seconde dan al weten of dat proces draait? Als je dit al werkend hebt kun je de 'poll' natuurlijk ook op een seconde (of misschien wel 5) zetten.
wallywally schreef op woensdag 08 augustus 2007 @ 11:21:
Nu ben ik dus op zoek naar een API die kan zien wanneer er een nieuw proces opgestart wordt zodat ik die timer eruit kan gooien.
Dan moet je je verdiepen in hooking; waarschijnlijk kun je wel ergens in de shell haken en genotified worden. Even zo uit de blote bol geen exact idee hoe/wat/waar, maar het is vast te googlen. Een begin (even snel wat gegoogled) voor VB6 zou je hier kunnen vinden (of hier).

[ Voor 13% gewijzigd door RobIII op 08-08-2007 11:34 ]

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


  • wallywally
  • Registratie: Maart 2004
  • Laatst online: 29-11 21:04
RobIII schreef op woensdag 08 augustus 2007 @ 11:26:
[...]

Moet je echt binnen een kwart seconde dan al weten of dat proces draait? Als je dit al werkend hebt kun je de 'poll' natuurlijk ook op een seconde (of misschien wel 5) zetten.
Ja het moet zeer snel zijn dat ik het zie, want ik moet het proces onderscheppen voordat het iets kan doen. Virus-scanner alike zegmaar.
[...]

Dan moet je je verdiepen in hooking; waarschijnlijk kun je wel ergens in de shell haken en genotified worden. Even zo uit de blote bol geen exact idee hoe/wat/waar, maar het is vast te googlen. Een begin (even snel wat gegoogled) voor VB6 zou je hier kunnen vinden.
Die site had ik ook al gevonden ja maar dacht daar niet echt iets te zien wat erop leek, maargoed ik ga me daar eens verder in verdiepen. Bedankt!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
wallywally schreef op woensdag 08 augustus 2007 @ 11:34:
Ja het moet zeer snel zijn dat ik het zie, want ik moet het proces onderscheppen voordat het iets kan doen. Virus-scanner alike zegmaar.
Dan ben je denk ik de verkeerde kant op aan 't werken. In een kwart seconde kan er al vanalles gebeuren en zelfs als je de resolutie van die poll omhoog zou gooien ben je toch altijd achter de feiten aan het aanrennen. Wat je dan beter kunt doen is de juiste functies die je wil voorkomen of 'aanpassen' wrappen zodat je er tussen gaat zitten (zo doen virusscanners het ook).

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


  • wallywally
  • Registratie: Maart 2004
  • Laatst online: 29-11 21:04
RobIII schreef op woensdag 08 augustus 2007 @ 11:36:
[...]

Dan ben je denk ik de verkeerde kant op aan 't werken. In een kwart seconde kan er al vanalles gebeuren en zelfs als je de resolutie van die poll omhoog zou gooien ben je toch altijd achter de feiten aan het aanrennen. Wat je dan beter kunt doen is de juiste functies die je wil voorkomen of 'aanpassen' wrappen zodat je er tussen gaat zitten (zo doen virusscanners het ook).
Ja dat dacht ik ook al. Die kwart seconde is al teveel, maarja als ik hem op 1MS zet dan is de CPU nergens anders meer mee bezig. Vandaar dat ik zo'n API zoek, zodat ik, voordat het process daadwerkelijk wordt uitgevoerd in kan springen.

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
wallywally schreef op woensdag 08 augustus 2007 @ 11:39:
[...]


Ja dat dacht ik ook al. Die kwart seconde is al teveel, maarja als ik hem op 1MS zet dan is de CPU nergens anders meer mee bezig.
Dat zeg ik. De resolutie verhogen (al zet je 'm op een honderdste ms, als dat al zou kunnen) is niet de oplossing. Wat jij wil is een facade om de eigenlijke functies die je wil vangen zodat je er "tussen" gaat zitten. Dan krijgt jouw app de eigenlijke call en jou app passed die dan weer door naar de originele functie call (mits je dat wil). Vandaar dat ik over een wrapper begin.

code:
1
2
3
4
5
+-------+       +-------+
|       |       |       |
|  APP  |  -->  |  API  |
|       |       |       |
+-------+       +-------+

Wordt dan:
code:
1
2
3
4
5
6
+-------+       +--------+       +-------+
|       |       |        |       |       |
|  APP  |  -->  |  Jouw  |  -->  |  API  |
|       |       |   app  |       |       |
|       |       |        |       |       |
+-------+       +--------+       +-------+


Maar of je dergelijke kunsten uithalen met (het toch wel gedateerde en niet altijd even stabiele) VB6 verstandig kunt noemen...mja. Don't get me wrong, ik heb jaren met VB6 gewerkt (en doe dat nog regelmatig) en heb er een hogere dunk van dan de gemiddelde devver denk ik. Maar ik vrees dat VB6 hier toch niet zo héél geschikt voor is.

[ Voor 38% gewijzigd door RobIII op 08-08-2007 11:53 ]

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


  • wallywally
  • Registratie: Maart 2004
  • Laatst online: 29-11 21:04
Misschien dat het beter is om in C te doen inderdaad, dat ligt net even wat dieper naar de core toe. Maargoed ik schrijf mn apps altijd eerst in VB om ze daarna in C-code om te zetten. Is net even iets makkelijker :P Ben namelijk niet echt een ster in C.

Maargoed, ik zie al iets wat ik kan gebruiken ja. Bedankt voor de hulp so far.

[ Voor 3% gewijzigd door wallywally op 08-08-2007 12:03 ]


  • sopsop
  • Registratie: Januari 2002
  • Laatst online: 28-11 11:15

sopsop

[v] [;,,;] [v]

wallywally schreef op woensdag 08 augustus 2007 @ 12:02:
[...]
Maargoed ik schrijf mn apps altijd eerst in VB om ze daarna in C-code om te zetten.
[..]
???

Zodat je er professioneler uitziet of hoe moet ik dat zien? Ik kan me namelijk geen enkele reden bedenken waarom je het in 'C' gaat omzetten.

  • MLM
  • Registratie: Juli 2004
  • Laatst online: 12-03-2023

MLM

aka Zolo

als je een tool schrijft voor "anderen" dan jezelf (een devver) is het soms onhandig om je tool incl VB6 runtime (meerdere MB's) en bijbehorend lang installatie-proces te maken...

de c(++) runtime is een stuk kleiner, en is (altijd) al geinstalleerd met windows

-niks-


Verwijderd

Met VB6 kan je in elk geval wel een dll maken die een ShellExecute Hook verzorgt.
Alles wat dan via de shell gestart wordt komt eerst door jouw Hook heen, in je code kan je dan beslissen om het programma/bestand al dan niet te laten openen.
Een virus heeft natuurlijk nog wel meer mogelijkheden om een programma te starten dan via de shell dus een 100% oplossing is dit niet, zal ook wel moelijk worden met VB6.
http://www.mvps.org/emorcillo/en/code/vb6/index.shtml
en dan onder shell extensions dacht ik.

  • wallywally
  • Registratie: Maart 2004
  • Laatst online: 29-11 21:04
sopsop schreef op woensdag 08 augustus 2007 @ 12:28:
[...]

???

Zodat je er professioneler uitziet of hoe moet ik dat zien? Ik kan me namelijk geen enkele reden bedenken waarom je het in 'C' gaat omzetten.
Ik zet VB code om in C code omdat ik van scrach af aan geen ster ben in C, maar weet wel hoe de meeste syntaxen uit vb in C luiden.

VB doe ik al een stuk langer, en voel me ook comfortabeler in die omgeving ;)

Beetje irrelevante opmerking ook.
Verwijderd schreef op woensdag 08 augustus 2007 @ 12:34:
Met VB6 kan je in elk geval wel een dll maken die een ShellExecute Hook verzorgt.
Alles wat dan via de shell gestart wordt komt eerst door jouw Hook heen, in je code kan je dan beslissen om het programma/bestand al dan niet te laten openen.
Een virus heeft natuurlijk nog wel meer mogelijkheden om een programma te starten dan via de shell dus een 100% oplossing is dit niet, zal ook wel moelijk worden met VB6.
http://www.mvps.org/emorcillo/en/code/vb6/index.shtml
en dan onder shell extensions dacht ik.
Zeer true. Bedank voor de URL.

Verwijderd


[ Voor 100% gewijzigd door Verwijderd op 15-01-2016 16:46 ]

Pagina: 1