Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Из Фокса узнать открыт ли нужный файл Excel / 10 сообщений из 10, страница 1 из 1
10.09.2004, 14:40
    #32689777
Dancer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из Фокса узнать открыт ли нужный файл Excel
Подскажите, если кто знает, как под управлением фокса узнать открыт ли нужный Excel-файл. Т.е. открыт файл MyFile.xls , как узнать открыт он или нет, в фоксе? Зараннее спаибо!
...
Рейтинг: 0 / 0
10.09.2004, 14:47
    #32689800
AleksMed
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из Фокса узнать открыт ли нужный файл Excel
Например с помощью вот такой функции

Function IsWindowExist

parameters WindowName

if parameters() = 0
WindowName = ''
else
WindowName = trim(WindowName)
endif

IsWindEx = 0

set library to sys(2004) + "Foxtools.fll"

mGetWinTxt = RegFn("GetWindowText", "I@CI", "I")
mGetWindow = RegFn("GetWindow", "II", "I")
mIsWinVis = RegFn("IsWindowVisible", "I", "I")

foxhwnd = MAINHWND()

hwndNext = CallFn(mGetWindow,foxhwnd,0)

do while hwndNext <> 0
if (hWndNext <> foxhWnd) and CallFn(mGetWindow,hWndNext,4) = 0 and CallFn(mIsWinVis,hWndNext) <> 0
Stuffer = space(64)
x = CallFn(mGetWinTxt,hWndNext,@Stuffer,64)
if WindowName $ Stuffer
IsWindEx = hWndNext
exit
endif
endif
hWndNext = CallFn(mGetWindow,hWndNext,2)
enddo

set library to

return IsWindEx
...
Рейтинг: 0 / 0
10.09.2004, 14:47
    #32689801
leaf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из Фокса узнать открыт ли нужный файл Excel
как вариант
gg=fopen('d:\MyExcel.xls)
if gg=-1
messagebox('Возможно файл открыт',48,'')
else
fclose(gg)
messagebox('Возможно файл закрыт',48,'')
endif
при условии что файл существует
...
Рейтинг: 0 / 0
10.09.2004, 16:24
    #32690092
Dancer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из Фокса узнать открыт ли нужный файл Excel
Спасибо большое! Вроде всё понятно.
...
Рейтинг: 0 / 0
10.09.2004, 18:35
    #32690352
Dancer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из Фокса узнать открыт ли нужный файл Excel
2 AleksMed: Я конечно извиняюсь, но не моглибы вы объяснить на двух пальцах как работает ваша вышеприведённая функция, т.е. что за функции RegFn("GetWindowText", "I@CI", "I") и RegFn("GetWindow", "II", "I"), RegFn("IsWindowVisible", "I", "I")? ну и т.д.
...
Рейтинг: 0 / 0
13.09.2004, 09:05
    #32691172
T0lik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из Фокса узнать открыт ли нужный файл Excel
По-моему если что-то в этот файл программно записыват лучше сделать так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Local loExcel, lcOldError, lnCount, llOpen
lcOldError=On("ERROR")
on error loExcel=.NULL.
loExcel=GetObject(,"Excel.Application") &&Проверяем открыт ли Ексель
on error &lcOldError
if isnull(loExcel)
	= MESSAGEBOX('Excel закрыт')
ELSE
	WITH loExcel
		llOpen=.F.
		FOR lnCount =  1  TO .Workbooks.Count && Перебираем открытые книги
			IF .Workbooks( 1 ).Name = "Filename.xls"
				llOpen=.T.
			ENDIF
		ENDFOR
	if llOpen
		= MESSAGEBOX('Файл открыт')
	else
		= MESSAGEBOX('Файл закрыт')
	endif
	ENDWITH
ENDIF
...
Рейтинг: 0 / 0
22.09.2004, 02:16
    #32705375
Igor Korolyov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из Фокса узнать открыт ли нужный файл Excel
Это древний способ подключения WinAPI функций. Сегодня все пользуются
DECLARE DLL для этих целей :)

Posted via ActualForum NNTP Server 1.0
...
Рейтинг: 0 / 0
23.09.2004, 20:06
    #32709371
strizh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из Фокса узнать открыт ли нужный файл Excel
Можно через канал DDE. Даешь lChan = DDEInitiate("Excel", "System"). Если прошло - значит Excel открыт. Дальше: stTopics = DDERequest(lChan, "Topics"). Если в stTopics есть имя твоего файла - он открыт.
Чуть медленновато только работают DDE-функции.
...
Рейтинг: 0 / 0
24.09.2004, 01:15
    #32709524
Igor Korolyov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из Фокса узнать открыт ли нужный файл Excel
Да - ещё надо учитывать, что юзверь может открыть 2 и более экземпляров
Excel, так что сам Excel спрашивать почти бесполезно - я вообще не очень
представляю какой именно из множества экземпляров будет подцеплен по
GetObject(), и какой будет отвечать на DDE запросы...

Posted via ActualForum NNTP Server 1.0
...
Рейтинг: 0 / 0
24.09.2004, 12:51
    #32710218
strizh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из Фокса узнать открыт ли нужный файл Excel
Только первый открытый Excel будет отвечать на lChan = DDEInitiate("Excel", "System"). Для второго и следующих нужно вместо "Excel" писать что-то другое. Мне иногда помогало "Excel2", "Excel3". А для WinMe - что-то типа "[Excel].1" - не помню точно.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Из Фокса узнать открыт ли нужный файл Excel / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]