ShellExecute с параметрами. Не понял как работает.

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
RIMs
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 08.10.2007 (Пн) 21:09

ShellExecute с параметрами. Не понял как работает.

Сообщение RIMs » 09.10.2007 (Вт) 16:31

нашел здесь нафоруме инфу по использованию ShellExecute, скачал, ну плюс минус небольшие изменения и пара ругательств, попытался разобраться, вышло:

Private Declare Function ShellEx Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Sub ShellDef(ByVal file_name)
Dim x
x = ShellEx(0, "open", file_name, "", "", 0)
End Sub
Private Sub Btt1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Btt1.Click
ShellDef("D:\temp1\text.txt")
End Sub

Не пашет, ругается на строку х = ShellEx.....
Выдает ошибку:
A call to PInvoke function 'DataAccess!DataAccess.Form1::ShellEx' has unbalanced the stack. This is likely because the managed PInvoke signature does not match the unmanaged target signature. Check that the calling convention and parameters of the PInvoke signature match the target unmanaged signature.
в чем проблема?

Вообще то (откуда все пошло) мне нужо запустить экзэшник D:\CNEXT.exe (с этим проблем нет), фишка в том что эта программа берет кучу настроек по умолчанию из файла 1.txt лежащего в D:\temp, а мне нужно чтоб брал 2.txt из D:\TEMP_2
как это сделать?
Пишу на VS2005 (если эт важно)

Lumen
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 841
Зарегистрирован: 03.12.2005 (Сб) 16:09
Откуда: Брянск

Сообщение Lumen » 09.10.2007 (Вт) 16:48

имхо это надо в самой программе изменять путь к файлу настроек. А твой код только открывает в блокноте (ну или че у тя там с txt ассоциировано) файл лежащий по адресу D:\temp1\text.txt... Так что Reflector в руки...
Подпись проходит рефакторинг

RIMs
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 08.10.2007 (Пн) 21:09

Сообщение RIMs » 09.10.2007 (Вт) 17:51

У мя в ярлыке на запуск этой проги прописан этот файл с настройками и она его оттуда и читает, т.е. в ярлыке я всегда могу его перенапрвить:
%windir%\system32\runas.exe /savecred /user:edc\Tlead "\"D:\Program Files\Dassault Systemes\B15\intel_a\code\bin\CATSTART.exe\" -run \"CNEXT.exe -admin\" -env CATIA_P3.V5R15.B15Tlead -direnv \"\\Fss1\TRAINING\CATIA_Settings\" -nowindow"

Все-равно мне ShellExecute не помошник?

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 09.10.2007 (Вт) 17:58

RIMs
Тебе описание ошибки ни о чём не говорит?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

RIMs
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 08.10.2007 (Пн) 21:09

Сообщение RIMs » 09.10.2007 (Вт) 18:15

:D Чес слово сожалею, что нет. по анлийски шпрэхаю, а что этот хочет не понимаю.

RIMs
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 08.10.2007 (Пн) 21:09

Сообщение RIMs » 10.10.2007 (Ср) 12:50

Хакер
Что означает эта ошибка?

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 10.10.2007 (Ср) 13:04

Сия ошибка означает:
1. Ты ошибся разделом, ибо NET чуток ниже
2. Типы аргументов в декларируемой функции не соотвествуют типам аргументов вызываемой функции.
3. Код мягко говоря некачественный, ибо отстутствет декларация типов.
4. В NET стоит использовать другие методы завместо ShellEx.
Весь мир матрица, а мы в нем потоки байтов!

RIMs
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 08.10.2007 (Пн) 21:09

Сообщение RIMs » 10.10.2007 (Ср) 15:59

Понял, спасибо, буду ковырять

RIMs
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 08.10.2007 (Пн) 21:09

Сообщение RIMs » 24.10.2007 (Ср) 9:50

Спустя пару недель все таки накопал то что мне нужно :)

Private Sub Btt1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Btt1.Click
Dim RetVal
RetVal = Shell("D:\Program Files\Dassault Systemes\B15\intel_a\code\bin\CNEXT.EXE -env CATIA_P3.V5R15.B15draft.txt -direnv \\Fss1\VEM_172_PROJECT\vem_prj_std\vem_CATIA_Standart ", 1)
End Sub

Думаю, просто опытному проггеру и в голову не могло прийти, что вопрос настолько прост, так что всем спасибо, сорри, но для меня это была Задача!


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 63

    TopList  
cron