Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Запускается одна и та же программа с разными ключами (http://forum.oszone.net/showthread.php?t=285848)

Alattare 31-07-2014 18:39 2383761

Запускается одна и та же программа с разными ключами
 
Запускается одна и та же программа во всех трех (с разными ключами),что не так сделано

Код:
#include <vcl.h>
#pragma hdrstop
#include <Tlhelp32.h>
#include "Unit1.h"

#pragma package(smart_init)
#pragma resource "*.dfm"


TForm1 *Form1;

char* pName;
AnsiString FullPath;
int OE;
String Capt;

__fastcall TForm1::TForm1(TComponent* Owner)
:TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N1Click(TObject *Sender)
{
OE = ((TMenuItem *)Sender)->Tag;
Capt = ((TMenuItem *)Sender)->Caption;
BitBtn1->Enabled = true;
switch(OE)
{
case 0 : FullPath = "revLoader.exe","-launch hl.exe -game cstrike -steam"; break;
case 1 : FullPath = "revLoader.exe","-launch hl.exe -game czero -steam"; break;
case 2 : FullPath = "revLoader.exe","-launch hl.exe -steam"; break;
}
Timer1->Enabled = true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
ShellExecute(NULL,"open",FullPath.c_str(),NULL,NULL,SW_SHOWNORMAL);
}
//---------------------------------------------------------------------------
bool IsProcessRun(char* pName)
{
HANDLE Hndl = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if(Hndl == INVALID_HANDLE_VALUE) return false;
PROCESSENTRY32 ProcessEntry;
ProcessEntry.dwSize = sizeof(ProcessEntry);
bool Loop = Process32First(Hndl, &ProcessEntry);
while (Loop)
{
if (strcmp(ProcessEntry.szExeFile, pName) == 0)
{
CloseHandle(Hndl);
return true;
}
Loop = Process32Next(Hndl, &ProcessEntry);
}
return false;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
pName = AnsiString(ExtractFileName(FullPath)).c_str();
if(! IsProcessRun(pName))
{
BitBtn1->Caption = Capt + " [0]";
BitBtn1->Enabled = true;
}
else
{
BitBtn1->Caption = Capt + " [1]";
BitBtn1->Enabled = false;
}
Application->ProcessMessages();
}
//---------------------------------------------------------------------------

P.S

Исходный код для C++ Builder XE6

Alattare 31-07-2014 18:41 2383762

Теги проверял все правильно,и все равно не правильный запуск

Alattare 31-07-2014 20:40 2383803

И так тоже самое:
#include <vcl.h>
#pragma hdrstop
#include <Tlhelp32.h>
#include "Unit1.h"

#pragma package(smart_init)
#pragma resource "*.dfm"


TForm1 *Form1;

char* pName;
AnsiString FullPath;
AnsiString Keys;
int OE;
String Capt;

__fastcall TForm1::TForm1(TComponent* Owner)
:TForm(Owner)
{
}

//---------------------------------------------------------------------------
bool IsProcessRun(char* pName)
{
HANDLE Hndl = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if(Hndl == INVALID_HANDLE_VALUE) return false;
PROCESSENTRY32 ProcessEntry;
ProcessEntry.dwSize = sizeof(ProcessEntry);
bool Loop = Process32First(Hndl, &ProcessEntry);
while (Loop)
{
if (strcmp(ProcessEntry.szExeFile, pName) == 0)
{
CloseHandle(Hndl);
return true;
}
Loop = Process32Next(Hndl, &ProcessEntry);
}
return false;
}

void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
ShellExecute(NULL,"open",FullPath.c_str(),Keys.c_str(),NULL,SW_SHOWNORMAL);
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
pName = AnsiString(ExtractFileName(FullPath)).c_str();
if(! IsProcessRun(pName))
{
BitBtn1->Caption = Capt + " [0]";
BitBtn1->Enabled = true;
}
else
{
BitBtn1->Caption = Capt + " [1]";
BitBtn1->Enabled = false;
}
Application->ProcessMessages();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N1Click(TObject *Sender)
{
OE = ((TMenuItem *)Sender)->Tag;
Capt = ((TMenuItem *)Sender)->Caption;
BitBtn1->Enabled = true;
switch(OE)
{
case 0 : FullPath = "revLoader.exe", Keys ="-launch hl.exe -game cstrike -steam"; break;
case 1 : FullPath = "revLoader.exe", Keys ="-launch hl.exe -game czero -steam"; break;
case 2 : FullPath = "revLoader.exe", Keys ="-launch hl.exe -steam"; break;
}
Timer1->Enabled = true;
}
//---------------------------------------------------------------------------

lxa85 01-08-2014 08:46 2383972

Alattare, ага. А теперь пожалуйста подробней про цели запуска программы.
А так же где находится revLoader, запускается ли он из командной строки (если да, то как ? С полными путями), что указано в переменной среды PATH, каково относительное расположение (где они друг от друга) компилируемого приложения и revLoader?
Что будет если открыть новую консоль и сразу выполнить " revLoader.exe -launch hl.exe -game cstrike -steam "?

P.S. Будете оформлять код, воспользуйтесь соотв. тегом. Во-о-он та решетка сверху.


Время: 13:47.

Время: 13:47.
© OSzone.net 2001-