Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как получить ProcessStartInfo, точнее путь откуда запушено приложение 
:(
    Опции темы
Jlekc
Дата 8.10.2006, 19:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Сабж.

Код

// через GetWindow - могу получить список активних окон
[DllImport("coredll.dll")]
static extern IntPtr GetWindow(IntPtr hWnd, uint uCmd);

// через GetWindowThreadProcessId - получить ProcessId
[DllImport("coredll.dll")]
private static extern IntPtr GetWindowThreadProcessId(IntPtr hWnd, out IntPtr ProcessId);

// пробывал вызвать С#-й метод GetProcessById, для получения информации о процесе, но она пчемуто не заполнена((
// Process.GetProcessById(IntPtr ProcessId)

Как инача получить эту информацию??
.Net или API, все принимаеться)

ЗЫ: работаю под WindowsMobile, мож птому Process.GetProcessById(IntPtr ProcessId) не отработал коректно(( 


--------------------
PM MAIL ICQ   Вверх
-ser-
Дата 9.10.2006, 05:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



GetProcessById должен работать и под Mobile в том числе. 

поставь try catch и отлови ArgumentException. Тут либо Id процесса уже истек, либо он не корректный в принципе.

я бы все таки использовал "user32.dll" вместо "coredll.dll", и объявил модификатор доступа public а не private.



--------------------
"Тонкая, однако, работа." 
PM MAIL ICQ   Вверх
mr.DUDA
Дата 9.10.2006, 08:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

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



Цитата(-ser- @  9.10.2006,  05:02 Найти цитируемый пост)
я бы все таки использовал "user32.dll" вместо "coredll.dll", и объявил модификатор доступа public а не private.

разве в WinMobile есть user32.dll, хммм-а ?..

З.Ы. модификатор доступа роли не играет, главное чтобы метод был static.


--------------------
user posted image
PM MAIL WWW   Вверх
Jlekc
Дата 9.10.2006, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(-ser- @  9.10.2006,  05:02 Найти цитируемый пост)
поставь try catch и отлови ArgumentException. Тут либо Id процесса уже истек, либо он не корректный в принципе.

Ощибки не получаю. Создаеться процес по указаному ProcessId(Есе отдам койта левый ProcessId, получаю ощибку, эт для примера).
Но информация о процесе, пуста (уже не раз натыкался на подобные приколы под .Net CE).

Мне просто нужен путь запуска, мож как иначе??


Цитата(-ser- @  9.10.2006,  05:02 Найти цитируемый пост)
и объявил модификатор доступа public а не private.

получил бы ощибку что не найден, я не с этим вопросом пришол


--------------------
PM MAIL ICQ   Вверх
mr.DUDA
Дата 9.10.2006, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

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



Накропал утилитку чтоб проверить:

Код
using System;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.Diagnostics;

namespace DeviceApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            this.btnRefresh_Click(null, EventArgs.Empty);
        }


        public delegate int EnumWindowsDelegate(IntPtr hwnd, int lParam);
        
        [DllImport("coredll.dll")]
        static extern int EnumWindows(EnumWindowsDelegate callback, int lPar);

        [DllImport("coredll.dll")]
        static extern int GetWindowText(IntPtr hwnd, StringBuilder text, int maxCount);

        [DllImport("coredll.dll")]
        private static extern IntPtr GetWindowThreadProcessId(IntPtr hWnd, out IntPtr ProcessId);

        int MyEnumWindowsProc(IntPtr hWnd, int lParam)
        {
            StringBuilder text = new StringBuilder(1024);
            GetWindowText(hWnd, text, 1024);

            IntPtr processId;
            GetWindowThreadProcessId(hWnd, out processId);

            ListViewItem lvi = new ListViewItem();
            lvi.Text = string.Format("{0} ({1})", text, processId.ToInt32());
            lvi.Tag = processId.ToInt32();
            this.listView1.Items.Add(lvi);

            return 1;
        }

        private void btnRefresh_Click(object sender, EventArgs e)
        {
            this.listView1.Items.Clear();
            EnumWindows(new EnumWindowsDelegate(MyEnumWindowsProc), 0);
        }

        private void btnGetProcInfo_Click(object sender, EventArgs e)
        {
            if (this.listView1.SelectedIndices.Count > 0)
            {
                ListViewItem lvi = this.listView1.Items[this.listView1.SelectedIndices[0]];
                int processId = (int)lvi.Tag;

                Process process = Process.GetProcessById(processId);
                if (process == null)
                    this.textBox1.Text = "Unable to find process " + processId;
                else
                    this.textBox1.Text = string.Format(@"Process: {0}
FileName: {1}
WorkingDir: {2}", process.Id, process.StartInfo.FileName, process.StartInfo.WorkingDirectory);
            }
        }
    }
}


Действительно, весь ProcessStartInfo пустой.

Поиск по MSDN в Platform SDK не дал никакой инфы. smile


--------------------
user posted image
PM MAIL WWW   Вверх
Jlekc
Дата 10.10.2006, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



ага, лажа М$
вот и пытаюсь найти способ добраться до инфы smile 


--------------------
PM MAIL ICQ   Вверх
mr.DUDA
Дата 10.10.2006, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

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



Цитата(Jlekc @  10.10.2006,  13:19 Найти цитируемый пост)
ага, лажа М$

Скорее всего, просто нет соотв. функций в апи (Platform SDK), а компакт-фреймворку StartInfo досталось "в наследство" от старшего брата - .NET Framework.


--------------------
user posted image
PM MAIL WWW   Вверх
Jlekc
Дата 11.10.2006, 11:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(mr.DUDA @  10.10.2006,  15:06 Найти цитируемый пост)
Скорее всего, просто нет соотв. функций в апи

на этот раз просто вернули пустоту, и на том спасибо smile , бывало что просто сыпит ощибками


--------------------
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


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

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




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


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

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