:: Архив конференции по VFP до 2005 года
Re: Задачка
borman
Автор

Сообщений: 11046
Откуда: Москва
Дата регистрации: 29.07.2004
Т. Е. ты все равно говоришь о запуске автономного .EXE из родительского, с условием, что второй .exe -
не визуальный?Тогда тож не совсем то.... Тогда сложности с управлением вторым EXE из первого возникнут...
О, гляди, в общем нужно что то типа -
1) запуск EXE (результат - имя exe появляется в диспетчере, на вкладке ПРИЛОЖЕНИЯ)
2) из EXE запуск чего то, имя чего отображено в диспетчере, на вкладке ПРОЦЕССЫ
3) Смерть EXE и соответственно безоговорочная кончина этого ЧЕГО ТО.....
Плюс главное условие - наше ЧТО ТО - не .EXE




------------------
Многие вещи нам непонятны не потому, что наши понятия слабы, а потому, что сии вещи не входят в круг наших понятий.
Ratings: 0 negative/0 positive
Re: Задачка
Петров Андрей

Сообщений: 2506
Откуда: Химки (М.О.)
Дата регистрации: 17.04.2002
Цитата:
3) Смерть EXE и соответственно безоговорочная кончина этого ЧЕГО ТО.....
Плюс главное условие - наше ЧТО ТО - не .EXE

Ну с 3 еще можно разобраться. Ты же можешь отловить кончину своего собственного приложения... Все другие ситуации это некорректная работа с прогой пользователем. Я так понимаю.

А вот насчет не EXE не знаю... А чего там драйвера чтоль висят у тебя? У меня только EXE + системные кхм сам запутался что наверное процессы. Или ты DLL хошь туды запихать?




------------------
PS Недочитал тему до конца...
Ratings: 0 negative/0 positive
Re: Задачка
borman
Автор

Сообщений: 11046
Откуда: Москва
Дата регистрации: 29.07.2004
УУУхххх, похоже что сами мы заблудились....
В принципе, сейчас, в данный момент, я ничего не хочу туда запихивать, да вот понимаешь, появилось немного свободного времени, а зазря тратить - не привык, поэтому хочу отработать такой варриантик, причем, я немного не так выразился, наше ЧТО ТО, возможно и не обязано издыхать вместе с запустившим его .exe, как варриант, оно могло бы и существовать далее, в некоторых случаях, ;) может когда и пригодиться это самое ЧТО ТО.....
Ясно одно, что это за зверь, этот ЧТО ТО пока непонятно......




------------------
Многие вещи нам непонятны не потому, что наши понятия слабы, а потому, что сии вещи не входят в круг наших понятий.
Ratings: 0 negative/0 positive
Re: Задачка
Steelrock

Сообщений: 13
Откуда: Тамбовская
Дата регистрации: 25.01.2004
Не помню уже где взял, но для просмотра сетевого окружения подойдет такой пример:
DO decl
* Specifies the type of software the computer is running
#DEFINE SV_TYPE_WORKSTATION 1
#DEFINE SV_TYPE_SERVER 2
#DEFINE SV_TYPE_SQLSERVER 4
#DEFINE SV_TYPE_DOMAIN_CTRL 8
#DEFINE SV_TYPE_PRINTQ_SERVER 0x200
#DEFINE SV_TYPE_SERVER_UNIX 0x800
#DEFINE SV_TYPE_SERVER_NT 0x8000
#DEFINE SV_TYPE_DOMAIN_MASTER 0x80000
#DEFINE SV_TYPE_WINDOWS 0x400000
#DEFINE SV_TYPE_ALL 0xFFFFFFFF
* testing various server lists
* = EnumServers (SV_TYPE_PRINTQ_SERVER)
* = EnumServers (SV_TYPE_SERVER)
* = EnumServers (SV_TYPE_SQLSERVER)
* = EnumServers (SV_TYPE_SERVER_NT)
* = EnumServers (SV_TYPE_DOMAIN_CTRL)
= EnumServers (SV_TYPE_ALL)
PROCEDURE EnumServers (lnServerType)
#DEFINE MAX_PREFERRED_LENGTH -1
#DEFINE SINFO_101_SIZE 24
*| typedef struct _SERVER_INFO_101 {
*| DWORD sv101_platform_id; 4
*| LPWSTR sv101_name; 4
*| DWORD sv101_version_major; 4
*| DWORD sv101_version_minor; 4
*| DWORD sv101_type; 4
*| LPWSTR sv101_comment; 4
*| } SERVER_INFO_101, *PSERVER_INFO_101, *LPSERVER_INFO_101;
LOCAL lnBuffer, lnCountRead, lnCountTotal, lnResult
STORE 0 TO lnBuffer, lnCountRead, lnCountTotal
WAIT WINDOW "Requesting data..." NOWAIT
lnResult = NetServerEnum (0, 101, @lnBuffer, MAX_PREFERRED_LENGTH,;
@lnCountRead, @lnCountTotal, lnServerType, 0, 0)
WAIT CLEAR
IF lnResult <> 0
* 87 = The parameter is incorrect
* 234 = More data is available
? "Error code:", lnResult
ELSE
LOCAL lcBuffer, lnBufLen, lnEntry, lnPlatformId, lnNamePtr,;
lnMajorVer, lnMinorVer, lnSofttype, lnMemoPtr,;
lcServerName, lcServerMemo
* creating resulting cursor
CREATE CURSOR csResult (platformid N(12), servername C(30),;
majorver N(12), minorver N(12), softtype N(12), comment C(250))
* copying the resulting array of SERVER_INFO_101 structures
* to a VFP string
lnBufLen = lnCountRead * SINFO_101_SIZE
lcBuffer = Repli (Chr(0), lnBufLen)
= Heap2String (@lcBuffer, lnBuffer, lnBufLen)
* scanning resulting array
FOR lnEntry = 1 TO lnCountRead
lcServerInfo = SUBSTR (lcBuffer,;
(lnEntry-1)*SINFO_101_SIZE+1, SINFO_101_SIZE)
lnPlatformId = buf2dword (SUBSTR (lcServerInfo, 1,4))
lnNamePtr = buf2dword (SUBSTR (lcServerInfo, 5,4))
lnMajorVer = buf2dword (SUBSTR (lcServerInfo, 9,4))
lnMinorVer = buf2dword (SUBSTR (lcServerInfo, 13,4))
lnSofttype = buf2dword (SUBSTR (lcServerInfo, 17,4))
lnMemoPtr = buf2dword (SUBSTR (lcServerInfo, 21,4))
lcServerName = getStrFromMem (lnNamePtr)
lcServerMemo = getStrFromMem (lnMemoPtr)
WAIT WINDOW lcServerName NOWAIT
INSERT INTO csResult VALUES (lnPlatformId, lcServerName,;
lnMajorVer, lnMinorVer, lnSofttype, lcServerMemo)
ENDFOR
WAIT CLEAR
ENDIF
* releasing the memory block allocated regardless of the result
* by OS within NetServerEnum call
= NetApiBufferFree (lnBuffer)
IF USED ("csResult")
SELECT csResult
GO TOP
BROWSE NORMAL NOWAIT
ENDIF
RETURN
FUNCTION getStrFromMem (lnMemBlock)
* converting memory allocated Unicode string to a VFP string
#DEFINE StrBufferLength 250
LOCAL lcBuffer
lcBuffer = SPACE(StrBufferLength)
= Heap2String (@lcBuffer, lnMemBlock, StrBufferLength)
lcBuffer = SUBSTR (lcBuffer, 1, AT(Chr(0)+Chr(0),lcBuffer)-1)
RETURN STRTRAN(lcBuffer, Chr(0),"")
FUNCTION buf2dword (lcBuffer)
RETURN Asc(SUBSTR(lcBuffer, 1,1)) + ;
Asc(SUBSTR(lcBuffer, 2,1)) * 256 +;
Asc(SUBSTR(lcBuffer, 3,1)) * 65536 +;
Asc(SUBSTR(lcBuffer, 4,1)) * 16777216
PROCEDURE decl
DECLARE INTEGER NetServerEnum IN netapi32;
INTEGER servername, INTEGER level, INTEGER @ bufptr,;
INTEGER prefmaxlen, INTEGER @ entriesread, INTEGER @ totalentries,;
INTEGER servertype, INTEGER domain, INTEGER resume_handle
DECLARE INTEGER NetApiBufferFree IN netapi32 INTEGER Buffer
DECLARE RtlMoveMemory IN kernel32 As Heap2String;
STRING @ Destination, INTEGER Source, INTEGER nLength




------------------
Ratings: 0 negative/0 positive
Re: Задачка "для души"
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Hi, borman!

По поводу многопоточности почитай тут:
forum.foxclub.ru
Потом в FIDO помнится некоторое время назад была большая дискуссия - как раз
применялся указанный компонент, плюс писанные на C куски - именно с целью
"бродяжничества" по сетевой инфраструктуре и определению "жизнеспособности"
определённых узлов.
В Google Groups искать по следующим идентификаторам сообщений:
Message-ID: <cbr56s$7au$1@ddt.demos.su>
Message-ID: <cdnjlq$1tcm$1@ddt.demos.su>
Думаю можно и с автором будет связаться, если уж так интересует данная тема.




------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Задачка "для души"
borman
Автор

Сообщений: 11046
Откуда: Москва
Дата регистрации: 29.07.2004
Привет Игорек!
Спасибо огромное, ты как всегда оперативно и в точку!
Не, связываться не особо то и надо, я ж говорю - это не работа а вольный поиск....




------------------
Многие вещи нам непонятны не потому, что наши понятия слабы, а потому, что сии вещи не входят в круг наших понятий.
Ratings: 0 negative/0 positive


Извините, но у вас нет прав для того, чтобы оставлять сообщения в этом форуме.

On-line: 4 (Гостей: 4)

© 2000-2024 Fox Club 
Яндекс.Метрика