Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Возможно ли выполнить CMD запрос? CMD запрос и получить результат в мемо 
:(
    Опции темы
XPyCT
Дата 30.1.2011, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 24.8.2007
Где: Moldova

Репутация: 10
Всего: 10



Всем привет!
Поиск поюзал, даже просмотрел свои посты но не нашел решения

собственно возможно ли выполнить cmd к примеру с ipconfig и сохранить это в мемо или в переменную стринговую?

может туплю, но не приложу ума как это сделать 

как запустить это знаю  как сохранить  результат нет )


Код

WinExec("ipconfig", SW_SHOW);
 
PM MAIL Skype   Вверх
586
Дата 30.1.2011, 19:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: 57
Всего: 146



Самый простой способ - вызвать команду "cmd.exe /c ipconfig > tempFile.txt", дождаться завершения команды, загрузить этот файл в Memo и удалить:
Код
char txtPath[MAX_PATH];
ExpandEnvironmentStringsA("%tmp%\\a3b6c5d4.txt", txtPath, MAX_PATH);
system((String("ipconfig > \"") + txtPath + '"').c_str());
Memo1->Lines->LoadFromFile(txtPath);
DeleteFile(txtPath);

Более сложный и правильный - через CreatePipe и CreateProcess.
PM   Вверх
XPyCT
Дата 30.1.2011, 23:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 24.8.2007
Где: Moldova

Репутация: 10
Всего: 10



Цитата(586 @ 30.1.2011,  19:01)
Самый простой способ - вызвать команду "cmd.exe /c ipconfig > tempFile.txt", дождаться завершения команды, загрузить этот файл в Memo и удалить:
Код
char txtPath[MAX_PATH];
ExpandEnvironmentStringsA("%tmp%\\a3b6c5d4.txt", txtPath, MAX_PATH);
system((String("ipconfig > \"") + txtPath + '"').c_str());
Memo1->Lines->LoadFromFile(txtPath);
DeleteFile(txtPath);

Более сложный и правильный - через CreatePipe и CreateProcess.

Спс огромное я пробовал!
Я пробовал раньше это, в мемо выводятся всякие крякообразы а именно потому что почемуто после каждого символа  ставится '\0'
по этому как я понимаю мемо и не подгружает дальше!
Да и к стати Ipconfig это примерная команда имелось ввиду любую команду! 
На самом деле я получаю серийник процессора
реализовал как вы сказали сложнее примером но тоже по крестьянски главное цель достигнута и есть к чему привязываться!

Может будут более рациональные предложения в дальнейшем? 
посмотрим 
ps:введите в командной строке 

Код

wmic cpu get processorid

PM MAIL Skype   Вверх
xvr
Дата 31.1.2011, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 48
Всего: 223



popen смотрели?

PM MAIL   Вверх
XPyCT
Дата 31.1.2011, 20:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 24.8.2007
Где: Moldova

Репутация: 10
Всего: 10



Да смотрел но решил остановится на своем!
так не понял как им пользоваться, если тут покажут может  воспользуюсь чьей то добротой
PM MAIL Skype   Вверх
xvr
Дата 31.1.2011, 21:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 48
Всего: 223



Цитата(XPyCT @ 31.1.2011,  20:39)
так не понял как им пользоваться, если тут покажут может  воспользуюсь чьей то добротой

Код

FILE* f=popen("ipconfig","rt");
char buf[1024];
while(fgets(buf,sizeof(buf),f))
 {
   Memo->Lines->Add(AnsiString(buf).Trim());
 }
fclose(f);

PM MAIL   Вверх
XPyCT
Дата 31.1.2011, 23:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 24.8.2007
Где: Moldova

Репутация: 10
Всего: 10



чет на пашет ошибается!
Код

//---------------------------------------------------------------------------
#include<stdio.h>
#include<conio.h>

void __fastcall TForm1::Button1Click(TObject *Sender)
{
 FILE* f=_popen("wmic cpu get processorid","rt");
char buf[1024];
while(fgets(buf,sizeof(buf), f))
 {
   Memo1->Lines->Add(AnsiString(buf).Trim());
 }
fclose(f);

}
//---------------------------------------------------------------------------


Цитата

access violation at adres 32665a01 in module .....

PM MAIL Skype   Вверх
xvr
Дата 1.2.2011, 10:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 48
Всего: 223



Возможно не запустился wmic. Надо проверять f (похоже там NULL).
На какой строке ошибка?

PM MAIL   Вверх
XPyCT
Дата 1.2.2011, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 24.8.2007
Где: Moldova

Репутация: 10
Всего: 10



в этой
Код

while(fgets(buf,sizeof(buf), f))


попробовал сменить  на это

Код

char *buf;

результат тот же

Добавлено через 6 минут и 41 секунду
вы были правы


Код

FILE* f=_popen("wmic cpu get processorid","rt");
char *buf;
if(f == NULL)
  ShowMessage("f is NULL");
else
{
 while(fgets(buf,sizeof(buf), f))
  {
    Memo1->Lines->Add(AnsiString(buf).Trim());
  }
}
fclose(f);


сработал  IF
Цитата

f  is  NULL


Это сообщение отредактировал(а) XPyCT - 1.2.2011, 16:36
PM MAIL Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0826 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.