[C] CreateProcess probleem

Pagina: 1
Acties:

  • _Nephilim_
  • Registratie: Januari 2004
  • Laatst online: 02-02 11:05
Ik ben bezig met een programma dat een X aantal processen moet gaan createn. Dit is geen probleem, maar wanneer ik een argument aan de commandline in CreateProcess toe wil voegen gaat het verkeerd:

C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
for (int i=0; i<X; i++)
{
  if(!CreateProcess(NULL,
  ("\"C:\\test.exe\" %d" i),
  NULL,
  NULL,
  FALSE,
  CREATE_NEW_CONSOLE,
  NULL,
  NULL, 
  &si,
  &pi)
  )
  {
    printf("CreateProcess %d failed.\n", i )
  }
}


wat doe ik hier verkeerd?

[ Voor 8% gewijzigd door curry684 op 02-01-2004 18:34 . Reden: [code]-tags zijn mooi he :) ]


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

Allereerst: dank voor je duidelijke uitleg! Uit "het gaat verkeerd" kan ik gelukkig perfect afleiden wat je probleem is en wat je al zoal hebt geprobeerd om het op te lossen, en welk gedeelte je niet echt snapt.

Maar okee:
_Nephilim_ schreef op 02 januari 2004 @ 18:25:
C:
1
("\"C:\\test.exe\" %d" i),
Kun je me even langzaam uitleggen wat deze regel code volgens jou zou moeten doen en welke onderbouwing je hebt om dat gedrag te verwachten?

[ Voor 3% gewijzigd door curry684 op 02-01-2004 18:36 ]

Professionele website nodig?


  • _Nephilim_
  • Registratie: Januari 2004
  • Laatst online: 02-02 11:05
met
("\"C:\\test.exe\" %d" i),
wil ik c:\test.exe opstarten met de parameter i,

stel: X = 3, dan zou ik test.exe drie opgestart willen hebben met drie verschillende parameters namelijk:

c:\test.exe 1
c:\test.exe 2
c:\test.exe 3


De foutmelding die ik krijg is de volgende:
'CreateProcessA' : cannot convert parameter 2 from 'int' to 'char *'

  • .oisyn
  • Registratie: September 2000
  • Nu online

.oisyn

Moderator Devschuur®

Demotivational Speaker

En waarom denk je dan dat je zomaar een integer achter een string kunt zetten? Je zult die integer moeten converteren naar een string, en dan de 2 strings aan elkaar plakken

Kijk eens naar sprintf

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • _Nephilim_
  • Registratie: Januari 2004
  • Laatst online: 02-02 11:05
zal ik doen, bedankt zover!

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

_Nephilim_ schreef op 02 januari 2004 @ 19:09:
met
("\"C:\\test.exe\" %d" i),
wil ik c:\test.exe opstarten met de parameter i,
Dat had ik idd wel verwacht, je vergeet echter het 2e gedeelte van mijn vraag: "welke onderbouwing heb je om dat gedrag te verwachten?"

Wat je nu gewoon hebt gedaan is uit de grote natte vinger een lap code getrokken, geen documentatie of wat dan ook gelezen (of uberhaupt een boek over C/C++) en maar wat opgeschreven wat er volgens jou logisch uitziet. Dat schiet dus niet op: programmeren is puur gestoeld op opschrijven wat de compiler er logisch uit vind zien.

Oftewel: schrijf je precondities eens uit (wat is de beginsituatie) en de postconditie (de gewenste eindsituatie van het stukje code). En ga vervolgens eens stap voor stap bedenken hoe je van A naar B komt. Dat werkt stukken beter dan gewoon een stuk random code dat nog niet eens aan de basale grammatica van de taal voldoet inkloppen.

Professionele website nodig?


Verwijderd

je moet volgens mij een char array aanmaken en daar naartoe sprintf'en. (net zoals printf, maar dan naar een geheugen stukje). dan werkt het wel.

op die manier wordt je argument aan createprocess realtime gebouwd, jij probeert hem runtime te maken of iets anders vreemds, het is in iedergeval geen C(++) wat je neergetypt hebt.

[ Voor 57% gewijzigd door Verwijderd op 03-01-2004 18:35 ]

Pagina: 1