Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.94/16: Рейтинг темы: голосов - 16, средняя оценка - 4.94
0 / 0 / 0
Регистрация: 01.10.2009
Сообщений: 31
1

Создать модуль DLL-модуль с классом, позволяющим запускать внешнюю программу

07.11.2011, 21:25. Показов 3335. Ответов 12
Метки нет (Все метки)

Как же все таки создать модуль DLL-модуль с классом, позволяющим запускать внешнюю программу. На многих форумах да и здесь находил код:
C#
1
2
3
System.Diagnostics.Process MyProc = new System.Diagnostics.Process();
MyProc.StartInfo.FileName = @"C:\MyProg.exe";
MyProc.Start();
Но как бы я его не подставлял все равно вылазят ошибки уважаемые Форумчанине помогите с этой проблемой научите как правильно создавать dll-ки.
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.11.2011, 21:25
Ответы с готовыми решениями:

Разработать и реализовать DLL-модуль с классом, позволяющим запускать внешнюю программу
Добрый день. Есть такая задача: Разработать и реализовать на платформе Microsoft .NET (используя...

Создать консольное .NET приложение использующее описанный DLL-модуль
Разработать и реализовать на платформе Microsoft .NET (используя язык программирования C#, VB.NET...

Создать модуль и создать программу, которая будет использовать этот же модуль
Требуется создать модуль и создать программу,которая будет использовать этот же модуль. При работе...

Создать модуль, и программу которая присоед-ет модуль и выдает подпрограммы раз за разом
unit leoro; interface Type A=array of integer; var i,j,k:integer; ...

12
Эксперт .NET
15326 / 11617 / 3048
Регистрация: 17.09.2011
Сообщений: 19,449
07.11.2011, 23:12 2
Создавайте новый проект, выбирайте тип Class Library, там пишите класс-обертку над System.Diagnostincs.Process, компилируйте проект, получившийся dll-файл присоединяйте к другому проекту и используйте вашу обертку.
0
0 / 0 / 0
Регистрация: 01.10.2009
Сообщений: 31
08.11.2011, 00:08  [ТС] 3
Цитата Сообщение от kolorotur Посмотреть сообщение
Создавайте новый проект, выбирайте тип Class Library, там пишите класс-обертку над System.Diagnostincs.Process, компилируйте проект, получившийся dll-файл присоединяйте к другому проекту и используйте вашу обертку.
Что значит пишите класс обертку ?
0
Эксперт .NET
15326 / 11617 / 3048
Регистрация: 17.09.2011
Сообщений: 19,449
08.11.2011, 00:11 4
Ну перед вами стоит задача:
Цитата Сообщение от paradoxonix Посмотреть сообщение
создать модуль DLL-модуль с классом, позволяющим запускать внешнюю программу
Такой класс уже существует, называется Process. Я сомневаюсь, что от вас хотят, чтобы вы написали его реализацию с нуля, потому предполагаю что нужно сделать свой класс, который внутри будет использвать уже существующий класс Process. Такой класс и называется оберткой (wrapper).
То есть вы берете уже готовый функционал и используете его через свой интерфейс.

Простенький пример:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class MyProcessStarter
{
   private System.Diagnostics.Process myProc = new System.Diagnostics.Process();
   public string ProcessName { get; set; }
   public MyProcessStarter(string processName)
   {
      this.ProcessName = processName;
   }
 
   public void StartProcess()
   {
      myProc.StartInfo.FileName = ProcessName;
      myProc.Start();
   }
}
Ну и походу дописываете уже свои методы/свойства.

В рабочем коде ваш класс-обертка будет использоваться вместо уже существующего:
C#
1
2
var proc = new MyProcessStarter(@"C:\MyProg.exe");
proc.StartProcess();
0
0 / 0 / 0
Регистрация: 01.10.2009
Сообщений: 31
08.11.2011, 00:23  [ТС] 5
А более подробно вы объяснить не могли бы так как я не мастак и еще не работал с dll
что не верно в листинге
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ClassLibrary3
{
    public class1()
    {
        System.Diagnostics.Process MyProc = new System.Diagnostics.Process();
        MyProc.StartInfo.FileName = @"C:\MyProg.exe";
        MyProc.Start();
    }
}
0
Эксперт .NET
15326 / 11617 / 3048
Регистрация: 17.09.2011
Сообщений: 19,449
08.11.2011, 00:34 6
Да забудьте вы про всякие dll, просто пишите код как для обычной программы.
В вашем коде создается не класс, а конструктор класса, который никакому классу не принадлежит. Так что это даже не откомпилируется.

Напишите обычный класс, который будет запускать процесс, вот и все.
Что-то вроде того, что в моем примере.
1
0 / 0 / 0
Регистрация: 01.10.2009
Сообщений: 31
08.11.2011, 00:42  [ТС] 7
Вопрос а как эту созданную dll импортировать в консольное приложение что бы использовать ее функции
0
Эксперт .NET
15326 / 11617 / 3048
Регистрация: 17.09.2011
Сообщений: 19,449
08.11.2011, 00:47 8
Project -> Add Reference, закладка Browse, там выбирайте вашу дллку.
Потом используйте ваш класс как любой другой.
1
0 / 0 / 0
Регистрация: 25.04.2012
Сообщений: 5
25.04.2012, 19:10 9
Здравствуйте, нужно написать ddl ку, для работы с точкой(я знаю такая такая уже есть), в учебных целях. Создал проект консольный. Добавил проект типа класс либрари (имя Ipoint). Написал в нём клас Point, создал объект Point, протестировал его функции. Добавил в ClassLibrary новый класс и написал там СТРУКТУРУ для работы с точкой в полярных коорд. Решил протестировать его, но система его не видит, неудается создать элемент. Вот скрин решения: (вложение)
Наверное неверно то, что я написал структуру в классе, но как ещё это сделать в одной сборке не знаю. Подскажите пожалуйста как сделать чтобы в точке вызова программы можно было создавать структуру
0
Миниатюры
Создать модуль DLL-модуль с классом, позволяющим запускать внешнюю программу  
Администратор
Эксперт .NET
9126 / 4402 / 747
Регистрация: 17.04.2012
Сообщений: 9,179
Записей в блоге: 14
25.04.2012, 20:42 10
Цитата Сообщение от GKPL Посмотреть сообщение
Наверное неверно то, что я написал структуру в классе,
Если структура у вас находится внутри класса, то вы должны обращаться к ней не просто по имени, вот так: имя_класса.имя_структуры, например:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
class Program
{
    public struct SampleStruct
    {
        public int Variable;
    }
 
    public void Test() {
        // доступ к вложенной структуре
        Program.SampleStruct x = new SampleStruct();
        int res = x.Variable;
    }
}
0
0 / 0 / 0
Регистрация: 25.04.2012
Сообщений: 5
25.04.2012, 21:31 11
tezaurismosis,не совсем так, я не правильно выразился. Посмотрите на картинку. у меня есть в проекте СlassLibrary, в СPoint.cs написан класс работы с точкой, я в этом СlassLibrary cоздал ещё один класс Point_Decart_Polar.cs и реализовал там структуру. Далее подцепил в проекте ConsoleWithClassess созданную dll ку IPoint(это видно на скриншоте). Проблема в том что в результате я не могу создать объект структуры Point_Decart_Polar, а СPoint могу создать, я протестировал его методы. В этом и состоит вопрос, почему один класс создаётся, а структура из этой же сборки не создаётся?
0
Администратор
Эксперт .NET
9126 / 4402 / 747
Регистрация: 17.04.2012
Сообщений: 9,179
Записей в блоге: 14
25.04.2012, 21:48 12
Тогда предоставьте код, может там ошибка. А ещё пересоберите библиотеку IPoint
0
0 / 0 / 0
Регистрация: 25.04.2012
Сообщений: 5
25.04.2012, 22:38 13
Всё разобрался, ни каких ошибок, оказывается идентификатор доступа у структуры был опущен, поэтому и не видно было структуры.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.04.2012, 22:38

Создать модуль и программу, которая будет тестировать модуль
Модуль должен состоять из процедур и функций которые надам я Процедура: извините что в формате...

Создать личный модуль, содержащий указанные подпрограммы. Написать программу, которая подключает созданный модуль и использует его подпрограммы
Создать личный модуль, содержащий указанные подпрограммы. Написать программу, которая подключает...

Создать модуль DLL библиотек с функциями вычисления размера файла
доброго времени суток! Есть довольно обширное задание у меня из которого я никак не могу одолеть...

Найти модуль скорости; модуль тангенциального ускорения; модуль нормального ускорения; модуль полного ускорения
1. Материальная точка движется по плоскости. Движение точки в векторном виде описывается уравнением...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.