Страница: 1 |
Страница: 1 |
Вопрос: Как из НЕТ приложения вызвать другую программу?
Добавлено: 10.06.08 12:52
Автор вопроса: Shota
Из коммандной строки я могу вызвать к примеру блокнот с параметром открываемого файла и Блокнот загрузиться сам и загрузит файл.
А как можно сделать тоже самое из НЕТ приложения? Причем приложение должно дождаться закрытия Блокнота, после чего измененный файл должен отправиться в базу данных.
Ответы
Всего ответов: 12
Номер ответа: 1
Автор ответа:
__Pavel__
Вопросов: 29
Ответов: 284
Web-сайт:
Профиль | | #1
Добавлено: 10.06.08 15:42
а не легче сделать свой редактор!??? тогда сможете отловить все действия пользователя
Номер ответа: 2
Автор ответа:
Павел
Администратор
ICQ: 326066673
Вопросов: 368
Ответов: 5968
Web-сайт:
Профиль | | #2
Добавлено: 10.06.08 16:15
System.Diagnostics.Process.Start
Номер ответа: 3
Автор ответа:
Павел
Администратор
ICQ: 326066673
Вопросов: 368
Ответов: 5968
Web-сайт:
Профиль | | #3
Добавлено: 10.06.08 16:15
Мог с пространством имен ошибиться, давно не кодировал Но класс точно называется Process. Найдёте.
Номер ответа: 4
Автор ответа:
ника
Вопросов: 1
Ответов: 111
Профиль | | #4
Добавлено: 10.06.08 21:10
using System;
using System.Diagnostics;
using System.IO;
namespace VbNetExample
{
public class Program
{
private static void Main(string[] args)
{
bool wait = true;
StartNotepadProcess(@"C:\test.txt", wait);
if (wait) DoWork(null, null);
}
private static void StartNotepadProcess(string filePath, bool wait)
{
if (!File.Exists(filePath)) throw new FileNotFoundException("File not found", filePath);
Process m_notepadProcess = new Process();
m_notepadProcess.StartInfo.CreateNoWindow = true;
m_notepadProcess.StartInfo.WindowStyle = ProcessWindowStyle.Maximized;
m_notepadProcess.StartInfo.FileName = filePath;
m_notepadProcess.StartInfo.Arguments = "notepad.exe";
m_notepadProcess.EnableRaisingEvents = !wait;
if (!wait) m_notepadProcess.Exited += new EventHandler(DoWork);
m_notepadProcess.Start();
if (wait) m_notepadProcess.WaitForExit();
}
private static void DoWork(object sender, EventArgs e)
{
throw new NotImplementedException();
}
}
}
Только учти, что в консоли ассинхронно запустить процесс не получится потому что основной поток закончит работу раньше, чем ты закроешь окно блокнота.
Номер ответа: 5
Автор ответа:
Shota
Вопросов: 22
Ответов: 52
Профиль | | #5
Добавлено: 11.06.08 17:24
Всем спасибо за ответы..... если кому интересно я решил подругому:
dim command as string = "c:\Windows\system32\notepad.exe c:\myFile.txt"
Microsoft.VisualBasic.Interaction.Shell(command, AppWinStyle.NormalFocus, true, -1);
Номер ответа: 6
Автор ответа:
Shota
Вопросов: 22
Ответов: 52
Профиль | | #6
Добавлено: 11.06.08 17:26
сори...... намешал бейсик и с шарп но все работает
Номер ответа: 7
Автор ответа:
AgentFire
ICQ: 192496851
Вопросов: 75
Ответов: 3178
Профиль | | #7
Добавлено: 11.06.08 18:52
ника, а можно твою асю?..
Номер ответа: 8
Автор ответа:
Fatty
Вопросов: 0
Ответов: 55
Профиль | | #8
Добавлено: 12.06.08 23:11
А если так:
If InStr(proc.MainWindowTitle, "notepad" > 0 Then proc.CloseMainWindow()
Next
~'J'~
Номер ответа: 9
Автор ответа:
ника
Вопросов: 1
Ответов: 111
Профиль | | #9
Добавлено: 12.06.08 23:28
Shota, но при таком раскладе ты не сможешь отловить момент закрытия приложения(блокнота), а в моем варианте это отслеживается.
AgentFire, а нафига она тебе?
Номер ответа: 10
Автор ответа:
Shota
Вопросов: 22
Ответов: 52
Профиль | | #10
Добавлено: 14.06.08 16:09
мне нужно написать интерфейс к одной таблице в базе которая содержит XML. XML - редактор я писать не собираюсь...... ( да и не смогу)
поэтому юзер сам выберит редактор по вкусу а я буду грузить в него XML и обратно в базу.
вот тут то и нужно вызвать другую программу и дождаться окончания ее работы.
Номер ответа: 11
Автор ответа:
AgentFire
ICQ: 192496851
Вопросов: 75
Ответов: 3178
Профиль | | #11
Добавлено: 14.06.08 23:33
а меня заводят девчонки, смыслящие в программинге
Номер ответа: 12
Автор ответа:
ника
Вопросов: 1
Ответов: 111
Профиль | | #12
Добавлено: 15.06.08 09:20
)) Жесть! Дружище, ты извращенец!