Форум программистов, компьютерный форум, киберфорум
VBScript/JScript/WSH/WMI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
0 / 0 / 0
Регистрация: 21.01.2021
Сообщений: 5

Гаджет для windows. Проверять текстовый файл каждую секунду и выводить текст из него.

21.01.2021, 15:22. Показов 2482. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здраствуйте.
Пишу гаджет для виндовс.
Нужно проверять файл.txt каждую секунду и выводить текст из него.
Сделал на BVScript. Файл проверяет, информацию выводит, но не могу сделать обновление.

HTML
________
HTML5
1
2
3
4
5
6
7
8
<html>
   <head>
     <script language = "vbscript" src="count.vbs" type = "text/vbscript"> </script>
     </head> 
     <body>
     <link href="StyleSheet.css" rel="stylesheet" type="text/css" /> 
    </body> 
</html>
______________



COUNT.VBS
_________________________



Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Set FSO = CreateObject("Scripting.FileSystemObject")
 
Set f = FSO.OpenTextFile("C:\\Tmp\count.txt",1)
 
Do While Not f.AtEndOfStream
 
strCount = f.ReadAll
 
document.write(strCount) 
 
Loop
 
f.Close
________________

Попробовал на JAVAScript не получается вывести информацию

_____________________

JavaScript
1
2
3
4
5
6
7
8
9
10
11
fso = new ActiveXObject("Scripting.FileSystemObject");
 
t = fso.OpenTextFile("C:\\Tmp\count.txt", 1);
 
while (!t.AtEndOfStream)
 
s = t.ReadAll();
 
document.write(s);
 
t.Close();
_________________

Подскажите как сделать?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.01.2021, 15:22
Ответы с готовыми решениями:

Гаджет для Windows 7
Доброго времени суток! Надеюсь не совсем ошибся темой, так как гаджет это html и java. Помогите пожалуйста, решить проблему. Надо...

Гаджет для Windows
Понимаю что тема не очень актуальна с выходом Windows 8.x , но я больше не нашел на чем бы поучится JavaScript. Нашел пару гаджетов,...

Гаджет для Windows 7
Добрый день! Есть ли желающие за небольшое вознаграждение создать гаджет?(html+js) Суть гаджета заключается в загрузке информации из файла...

10
 Аватар для web_coder2
755 / 359 / 100
Регистрация: 04.10.2018
Сообщений: 548
22.01.2021, 08:11
Привет evgen8282,

ActiveXObject - это фишка только для IE, для одновременного доступа к файлам нужно использовать потоки, желательно чтобы был метод watch, к которому можно подключить слушателя и он будет срабатывать на изменение файла, изменения будут буферизироваться, а вы буфер будете считывать 1 раз в секунду. Но тут все зависит от конкретного движка js что он поддерживает и как расширяется, если это браузерный js, то я затрудняюсь ответить как это сделать. Там тоже есть поддержка Streams API. Но я не знаю можно ли с помощью нее работать с файлами. В NodeJS есть fs.watch и потоки(pipes).
1
Эксперт JS
 Аватар для Iverycool
1586 / 796 / 362
Регистрация: 01.02.2019
Сообщений: 1,047
23.01.2021, 22:18
Лучший ответ Сообщение было отмечено evgen8282 как решение

Решение

web_coder2, то, что Вы написали - всё верно, только ТС нужно сделать именно гаджет для винды, т.е. по сути html-страницу для эксплорера))
Увы в ActiveX нет метода watch, поэтому слежение за файлом приходиться делать через таймер, что, конечно, не производительно, но зато самый простой способ.

evgen8282, чтобы "делать что-то каждую секунду" нужно использовать setInterval, также не надо писать через document.write, так как мы сотрём не только текст на странице, но и наш скрипт
HTML5
1
2
3
4
5
6
7
8
9
<html>
  <head>
    <script language="vbscript" src="a.vbs" type="text/vbscript"></script>
    <link href="StyleSheet.css" rel="stylesheet" type="text/css" />
  </head>
  <body>
    <div id="data"></div>
  </body>
</html>
Visual Basic
1
2
3
4
5
6
Set FSO = CreateObject("Scripting.FileSystemObject")
setInterval "writeFile", 1000
 
sub writeFile
  data.innerText = FSO.OpenTextFile("D:\\aa.txt", 1).ReadAll
end sub
P.S. Чтобы "правильно" следить за файлом надо порыться в winApi, хотя, по-моему, и в PowerShell тоже есть такая функция...
3
 Аватар для web_coder2
755 / 359 / 100
Регистрация: 04.10.2018
Сообщений: 548
23.01.2021, 23:50
Привет Iverycool, ну если мыслить еще глобальнее то можно сделать виндовый сервис у которого есть полный доступ к ФС а с гаджетом работать через сокеты.
0
Эксперт JS
 Аватар для Iverycool
1586 / 796 / 362
Регистрация: 01.02.2019
Сообщений: 1,047
24.01.2021, 15:54
Цитата Сообщение от web_coder2 Посмотреть сообщение
Привет Iverycool, ну если мыслить еще глобальнее то можно сделать виндовый сервис у которого есть полный доступ к ФС а с гаджетом работать через сокеты.
Да, вариант хороший, только вот цена вопроса Если нужно тупо мониторить файл и его содержимое, то вариант выше вполне сойдёт.
0
 Аватар для web_coder2
755 / 359 / 100
Регистрация: 04.10.2018
Сообщений: 548
25.01.2021, 06:51
Цитата Сообщение от Iverycool Посмотреть сообщение
Да, вариант хороший, только вот цена вопроса
зато будут возможности для расширения если потребуется как то еще взаимодействовать с ОС, например иконка в панели быстрого доступа
0
0 / 0 / 0
Регистрация: 21.01.2021
Сообщений: 5
25.01.2021, 12:35  [ТС]
Спасибо. Я новичок в этом деле. Всего неделю.
Если не затруднит дайте комментарий к моему коду, что в нем неправильно? (Хотя код рабочий)

HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<html>
   
   <head>
     
     </head>
     
     <body>
     
      <div align="right" id="count"></div>
      
      <div align="right" id="total"></div>
     
     <link href="StyleSheet.css" rel="stylesheet" type="text/css" />
     
      <script language = "vbscript" src="count.vbs" type = "text/vbscript"> </script>
     
    </body>
        
</html>
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Sub Window_Onload
GetImages()
iTimerID = window.SetInterval("GetImages", 500)
End Sub
 
function GetImages
Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:\tmp\count.txt")
Set TextStream = File.OpenAsTextStream(1)
count.innerHTML = TextStream.ReadAll()
TextStream.Close
 
Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:\tmp\total.txt")
Set TextStream = File.OpenAsTextStream(1)
total.innerHTML = TextStream.ReadAll()
TextStream.Close
 
end function
0
Эксперт JS
 Аватар для Iverycool
1586 / 796 / 362
Регистрация: 01.02.2019
Сообщений: 1,047
25.01.2021, 22:28
Цитата Сообщение от web_coder2 Посмотреть сообщение
зато будут возможности для расширения если потребуется как то еще взаимодействовать с ОС, например иконка в панели быстрого доступа
Для расширения согласен, что лучше сразу использовать"нормальную" технологию, хотя то, что вы указали (а также много других прикольных плюшек, как иконка в трее и тп.) можно сделать и на этой технологии (хоть и с костылями)
Цитата Сообщение от evgen8282 Посмотреть сообщение
Если не затруднит дайте комментарий к моему коду, что в нем неправильно?
"Неправильно" - в смысле "не хорошо" ?) Если так то коротко пробежусь по вашему коду:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
' во-первых, форматирование нужно)
Sub Window_Onload ' в целом, вешать onload - хорошо, однако если объявлять скрипт в конце html-файла(как вы и сделали), то в этом нет необходимости
  GetImages() ' скобки будут необязательны, если сделать GetImages процедурой
  iTimerID = window.SetInterval("GetImages", 500) ' зачем вы задаёте значение переменной, которой не будете пользоваться, да и SetInterval подразумевает window.SetInterval
End Sub
 
function GetImages ' в отличие от js, в vb(и его диалектах) есть разделение на функции и процедуры, в данном случае ваша "функция" ничего не возвращает, следовательно стоит сделать её процедурой
  Set FSO = CreateObject("Scripting.FileSystemObject") ' лучше вынести за пределы процедуры, как в моём коде
  ' нижеописанные процедуры можно совершить одной строчкой, что я писал уже в своём коде ↑
  Set File = FSO.GetFile("C:\tmp\count.txt")
  Set TextStream = File.OpenAsTextStream(1)
  count.innerHTML = TextStream.ReadAll()
  TextStream.Close
  
  ' вы второй раз пишете то же самое(почти) - следует вынести в отдельную функцию
  Set FSO = CreateObject("Scripting.FileSystemObject")
  Set File = FSO.GetFile("C:\tmp\total.txt")
  Set TextStream = File.OpenAsTextStream(1)
  total.innerHTML = TextStream.ReadAll()
  TextStream.Close
end function
Вот исправленный код:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
Set FSO = CreateObject("Scripting.FileSystemObject")
GetImages
SetInterval("GetImages", 500)
 
Sub GetImages
  count.innerHTML = ReadFile("C:\tmp\count.txt")
  total.innerHTML = ReadFile("C:\tmp\total.txt")
End Sub
 
Function ReadFile(path)
  ReadFile = FSO.OpenTextFile(path, 1).ReadAll
End Function
1
0 / 0 / 0
Регистрация: 21.01.2021
Сообщений: 5
27.01.2021, 21:05  [ТС]
Iverycool, Последний вариант не заработал. Сделал из предыдущего, но тоже не хорошо.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Set FSO = CreateObject("Scripting.FileSystemObject")
setInterval "writeFile_C", 1000
 
sub writeFile_C
  count.innerText = FSO.OpenTextFile("C:\tmp\count.txt", 1).ReadAll
  
end sub
 
Set FSO = CreateObject("Scripting.FileSystemObject")
setInterval "writeFile_T", 1000
 
sub writeFile_T
  total.innerText = FSO.OpenTextFile("C:\tmp\total.txt", 1).ReadAll
  
end sub
Подправте, если не сложно.
0
Эксперт JS
 Аватар для Iverycool
1586 / 796 / 362
Регистрация: 01.02.2019
Сообщений: 1,047
28.01.2021, 21:03
evgen8282,
Visual Basic
1
2
3
4
5
6
7
Set FSO = CreateObject("Scripting.FileSystemObject")
setInterval "writeFile", 1000
 
sub writeFile
  count.innerText = FSO.OpenTextFile("C:\tmp\count.txt", 1).ReadAll
  total.innerText = FSO.OpenTextFile("C:\tpm\total.txt", 1).ReadAll
end sub
0
0 / 0 / 0
Регистрация: 21.01.2021
Сообщений: 5
28.01.2021, 22:07  [ТС]
Почему то выводит только первую переменную
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.01.2021, 22:07
Помогаю со студенческими работами здесь

С++ гаджет для Windows SideBar
Снова привет) Расскажите кто знает как можно написать гаджет для Windows SideBar на С++, всё перерыл, везде только на HTML. Может кто...

Гаджет для Windows 7 - Java
Помогите пожалуйста, нужно создать гаджет под win7 на языке Java.

Гаджет Windows 7 для переключения аудио устройств
создайте пожалуйста гаджет realtek HD Windows 7 для переключения аудио устройств одним нажатием между динамиками и digital outpud

Написать гаджет на рабочий стол для Windows часы-будильник
Здравствуйте, господа программисты!) Необходимо написать гаджет на рабочий стол для Windows часы-будильник. скажите реально ли это...

Опрос разработчиков: гаджет USB vs гаджет WiFI ADB vs эмулятор
Давно мечтаю узнать как ДРУГИЕ работают... Хотел серию голосований здесь провести, но админы сайта (увы) не ответили... хотел галочками в...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru