purebasic.info

PureBasic forum
Текущее время: Ср сен 19, 2018 2:17 pm

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 30 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Вт июн 23, 2009 8:38 am 
Не в сети
доцент

Зарегистрирован: Пн июн 01, 2009 8:26 am
Сообщений: 50
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Похоже есть способ работы с ActiveX через atl.dll которая уже есть в системе.

_________________
Остановите землю, я схожу :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср июн 24, 2009 6:58 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11255
Благодарил (а): 4 раз.
Поблагодарили: 429 раз.
andrest писал(а):
есть способ работы с ActiveX через atl.dll
Ну так PureDisphelper именно так и делает! :)

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт июл 03, 2009 10:59 am 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11255
Благодарил (а): 4 раз.
Поблагодарили: 429 раз.
А с помощью данной библиотеки можно выполнить действия, аналогичные этому vbs скрипту?

Цитата:
set sh=WScript.CreateObject("WScript.Shell")
sh.run "Telnet IP роутера"
WScript.Sleep 2000
sh.SendKeys "admin"&vbcr
WScript.Sleep 1000
sh.SendKeys "пароль"&vbcr
WScript.Sleep 1000
sh.SendKeys "echo 3 > /proc/var/fyi/wan/ppp_0_1_32_1/wanup "&vbcr
WScript.Sleep 10000
sh.SendKeys "echo 1 > /proc/var/fyi/wan/ppp_0_1_32_1/wanup"&vbcr
Wscript.Sleep 500
sh.SendKeys "^{]}"
Wscript.Sleep 100
sh.SendKeys "quit"&vbcr

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт июл 03, 2009 11:31 am 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6382
Благодарил (а): 20 раз.
Поблагодарили: 198 раз.
Пункты репутации: 48
Пётр писал(а):
А с помощью данной библиотеки можно выполнить действия, аналогичные этому vbs скрипту?


А зачем с помощью библиотеки? Это можно и в Пурике сразу выполнить. Тут же кроме запуска программы Telnet IP роутера, задержек и передачи нажатия клавиш в запущенную программу больше нет ничего!

_________________
read-only


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт июл 03, 2009 11:37 am 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6382
Благодарил (а): 20 раз.
Поблагодарили: 198 раз.
Пункты репутации: 48
С помощью библиотеки подобно этому:

Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
EnableExplicit
 
Define oWScript = dhCreateObject("WScript.Shell")
 
dhToggleExceptions(#True)
 
If oWScript
  dhCallMethod(oWScript, "Run(%s)", @"calc")
  Delay(100)
  dhCallMethod(oWScript, "AppActivate(%s)", @"Calculator"); english
  ;dhCallMethod(oWScript, "AppActivate(%s)", @"Rechner"); german
  Delay(100)
  dhCallMethod(oWScript, "SendKeys(%s)", @"1{+}")
  Delay(500)
  dhCallMethod(oWScript, "SendKeys(%s)", @"2")
  Delay(500)
  dhCallMethod(oWScript, "SendKeys(%s)", @"~")
  Delay(500)
  dhCallMethod(oWScript, "SendKeys(%s)", @"*3")
  Delay(500)
  dhCallMethod(oWScript, "SendKeys(%s)", @"~")
  Delay(2500)
  dhCallMethod(oWScript, "SendKeys(%s)", @"%{F4}")
  dhReleaseObject(oWScript)
EndIf


_________________
read-only


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт июл 03, 2009 11:38 am 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11255
Благодарил (а): 4 раз.
Поблагодарили: 429 раз.
Можно ещё попробовать без Telnet, обратившись сразу к модему с помощью сетевых функций.
Сейчас попробую.

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт авг 20, 2009 10:48 am 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11255
Благодарил (а): 4 раз.
Поблагодарили: 429 раз.
Как оказалось, на пурике можно без проблем эмулировать телнет, так что скрипты фтопку! :)

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт авг 20, 2009 12:13 pm 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6382
Благодарил (а): 20 раз.
Поблагодарили: 198 раз.
Пункты репутации: 48
Пётр писал(а):
Как оказалось, на пурике можно без проблем эмулировать телнет


Пт Июл 03, 2009 ->Чт Авг 20, 2009 Долго скрывал истину! :D

_________________
read-only


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт авг 20, 2009 12:43 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11255
Благодарил (а): 4 раз.
Поблагодарили: 429 раз.
kvitaliy писал(а):
Долго скрывал истину
неа, просто были дела поважнее.
А к разборкам с модемом вернулся только вчера.

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт май 18, 2012 9:56 pm 
Не в сети
студент

Зарегистрирован: Пн май 14, 2012 5:11 pm
Сообщений: 5
Откуда: Уфа
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Как правильно прописывать команду этой библиотеки для открытия имеющегося объекта dhGetObject() ? А конкретно excel'евского файла.
На основе этого сообщения:
http://purebasic.info/phpBB2/viewtopic.php?p=30625&highlight=dhcreateobject#30625
Пётр писал(а):
Экспортировать данные в exel можно помощью PureDispHelper.
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
dhToggleExceptions(#True)
 
ExcelApp = dhCreateObject("Excel.Application")
 
If ExcelApp
 
  dhPutValue(ExcelApp, ".Visible = %b", #True)
 
  dhGetValue("%o", @Workbook, ExcelApp, ".Workbooks.Add")
 
  dhPutValue(ExcelApp, "Cells(%d, %d).Value = %s", 1, 1, @"Feel")
  dhPutValue(ExcelApp, "Cells(%d, %d).Value = %s", 2, 1, @"the")
  dhPutValue(ExcelApp, "Cells(%d, %d).Value = %s", 3, 1, @"pure")
  dhPutValue(ExcelApp, "Cells(%d, %d).Value = %s", 4, 1, @"Power")
 
  dhPutValue(ExcelApp, "Cells(%d, %d).Value = %s", 1, 2, @"the")
  dhPutValue(ExcelApp, "Cells(%d, %d).Value = %s", 1, 3, @"pure")
  dhPutValue(ExcelApp, "Cells(%d, %d).Value = %s", 1, 4, @"Power")
 
  MessageRequester("PureDispHelper-ExcelDemo", "Click OK to close Excel")
 
  dhCallMethod(ExcelApp, ".Quit")
 
  dhReleaseObject(Workbook) : Workbook = 0
  dhReleaseObject(ExcelApp) : ExcelApp = 0
 
Else
  MessageRequester("PureDispHelper-ExcelDemo", "Couldn't create Excel-Object")
EndIf



А хранить данные можно в БД, типа SQLite.

Написано следующее:
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
dhToggleExceptions(#True) 
 
; ExcelApp = dhCreateObject("Excel.Application")
dhGetObject("c:\book1.xls", "Excel.Application", @ExcelApp)
 
 If ExcelApp
 
   dhPutValue(ExcelApp, ".Visible = %b", #True)
   dhGetValue("%o", @Workbook, ExcelApp, ".Workbooks.Add")
   dhPutValue(ExcelApp, "Cells(%d, %d).Value = %s", 1, 1, @"Feel")
   MessageRequester("PureDispHelper-ExcelDemo", "Click OK to close Excel")
 
   dhCallMethod(ExcelApp, ".Quit")
 
   dhReleaseObject(Workbook) : Workbook = 0
   dhReleaseObject(ExcelApp) : ExcelApp = 0
 
 Else
   MessageRequester("PureDispHelper-ExcelDemo", "Couldn't create Excel-Object")
 EndIf
 


В результате ошибка в dhGetObject("c:\book1.xls", "Excel.Application", @ExcelApp) , как стоило указать правильно параметры? Файл book1.xls находится по этому адресу.

Описание из help'a:
Syntax

dhGetObject(File.s, ProgID.s, *IID)
Description

Returns the IDispatch pointer of an existing instance of the object identified by ProgID
or Loads a file from disk into the object identified by ProgID

results #S_OK on success


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср мар 20, 2013 2:00 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11255
Благодарил (а): 4 раз.
Поблагодарили: 429 раз.
Версия для PB 5.10 и PB 5.11.


Вложения:
PureDisphelper_PB_5_10_x86.zip [584.18 KiB]
Скачиваний: 241

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)
Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Библиотека PureDisphelper
СообщениеДобавлено: Чт июн 08, 2017 11:24 am 
Не в сети
док

Зарегистрирован: Вс июл 05, 2009 5:55 pm
Сообщений: 165
Благодарил (а): 1 раз.
Поблагодарили: 7 раз.
Пункты репутации: 0
Хотя тема создана давно,я нестал создавать новую.Есть вопросы по этой библиотеке, точнее по экселю, часть разобрался, а часть немогу понять как делать. Вот прога, в ней я сделал то что разобрался, но после проги написал список вопросов :?: которые никак неполучаются :( .

Работаю с Пурик версии 4.3, PureDispHelper, Эксель2003, винда XP
Вот прога то, что получилось с экселем сделать:
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
 
; Define DISPHELPER_NO_FOR_EACH
; Define DISPHELPER_NO_OCX_CreateGadget
; EnableExplicit
dhToggleExceptions(#True)
 
;ExcelПриложение = Новый COMОбъект("Excel.Application");
ExcelApp = dhCreateObject("Excel.Application"):
 
Define.variant result:Define.d value1, value2, value3, date, retval
 
If ExcelApp
 
  dhPutValue(ExcelApp, ".Visible = %b", #True)
  dhGetValue("%o", @Workbook, ExcelApp, ".Workbooks.Add")
 
      dhPutValue(ExcelApp, "Cells(%d, %d).Value = %T", 1, 1, @"Feel")
      dhPutValue(ExcelApp, "Cells(%d, %d).Value = %T", 1, 2, @"the")
     
      dhPutValue(ExcelApp, "Cells(%d, %d).Value = %T", 2, 1, @"Value1")
      dhPutValue(ExcelApp, "Cells(%d, %d).Value = %T", 3, 1, @"Value2")
      dhPutValue(ExcelApp, "Cells(%d, %d).Value = %T", 4, 1, @"Value3")
      dhPutValue(ExcelApp, "Cells(%d, %d).Value = %T", 6, 1, @"Short")
     
      value1 = 100.5:value2 = 10.1:value3 = 299.9
      dhPutValue(ExcelApp, "Cells(%d, %d).Value = %e", 2, 2, @value1)
      dhPutValue(ExcelApp, "Cells(%d, %d).Value = %e", 3, 2, @value2)
      dhPutValue(ExcelApp, "Cells(%d, %d).Value = %e", 4, 2, @value3)
     
      date = 43000 ;date = vT_DATE(Date())
      dhPutValue(ExcelApp, "Cells(%d, %d).Value = %D", 5, 2, @date )
     
     
      ; Define.d short_value:
      short_value.d = 12345678901234567890
       dhPutValue(ExcelApp, "Cells(%d, %d).Value = %e", 6, 2, @short_value)
   
    s2.s=""
      dhPutValue(ExcelApp, "Cells(%d, %d).Value = %T", 1, 3, @"5422222"); этим записано
     
    ;   Указание значения ячейки:Ячейка.Value = "Значение ячейки"
; если присвоение записано так "Cells(%d, %d).Value = %e"
    ;   Установить размер шрифта ячейки:
;Ячейка.Font.Size = 10;то тут "Cells(%d, %d).Font.Size = %i", 2, 2, 20
    ;   слово Ячейка меняется на Cells(%d, %d)
;изменить размер шрифта
      dhPutValue(ExcelApp, "Cells(%d, %d).Font.Size = %i", 7, 2, 20)
;делаем жирную каемку для ячейки
      dhPutValue(ExcelApp, "Cells(%d, %d).Borders.Weight = %i", 7, 2, 3)
;Установить цвет границы ячейки
      dhPutValue(ExcelApp, "Cells(%d, %d).Borders.Color = %i", 7, 2, 255)
;подчёркивание текста в ячейке:
      dhPutValue(ExcelApp, "Cells(%d, %d).Font.Underline = %i", 7, 2, 2)
      dhPutValue(ExcelApp, "Cells(%d, %d).Value = %d", 7, 1, 7)
      dhPutValue(ExcelApp, "Cells(%d, %d).Value = %d", 7, 3, 5)
 
;вносим формулу
      dhPutValue(ExcelApp, "Cells(%d, %d).FormulaLocal = = %T", 7, 2,@"=RC[1]*RC[-1]")
     
    ;   Узнать общее количество листов в книге:        КоличествоЛистов = Книга.Sheets.Count;
    dhGetValue("%i", @s5, ExcelApp, "Sheets.Count");s5 содержит количество листов
   
      dhGetValue("%T", @s2.s, ExcelApp, "Cells(%d, %d).Value", 1, 3):;Debug s2
      dhPutValue(ExcelApp, "Cells(%d, %d).Value = %T", 1, 4, @s2.s)
     
      dhGetValue("%e", @retval, ExcelApp, "Cells(%d, %d).Value", 4, 2);
      dhGetValue("%v", @result, ExcelApp, "Cells(%d, %d).Value", 5, 2)
   
    ;   Define.i result5;этот тип имеет длинну зависимо от версии 32 или 64
; может происходит наезд даных.
     ; Define.d result7;
      dhGetValue("%e", @result7.d, ExcelApp, "Cells(%d, %d).Value", 4, 2)
 
; выводим результат
     s$=StrD(retval)+Chr(10)
     s$+"Result Cells(5,2) (Date): " + Str(result)
    s$+Chr(10)+"Result:" + StrD(result7)
    s$+Chr(10)+s2.s
    s$+Chr(10)+PeekS(@s2.s)
    s$+Chr(10)+Chr(PeekB(@s2) )+Chr(PeekB(@s2+1) )+Chr(PeekB(@s2+2) )
     
      MessageRequester("PureDispHelper-ExcelDemo",s$  )
 
  dhCallMethod(ExcelApp, ".Quit")
 
  dhReleaseObject(Workbook) : Workbook = 0
  dhReleaseObject(ExcelApp) : ExcelApp = 0
Else
  MessageRequester("PureDispHelper-ExcelDemo", "Couldn't create Excel-Object")
EndIf
 



Думал поискать на COMatePLUS http://www.purebasic.info/phpBB3ex/view ... ilit=Excel,
ExcelFunktion.pbi и ExcelConstants.pbi но все ссылки устарели выдает "ERROR 404: Datei nicht vorhanden", поисковиком ненашел ничего, гдето у себя нашел только справку, поэтому решыл если PureXLS библиотека работает для новой версии екселя 2003 и старше(на 97 экселе неверно отражает, просто неставил 2003, хватало и этой) и PureXLS написана на основе PureDispHelper писать прогу на ней. Много дней я гуглил и искал инфу но все тяжело. Если есть библиотека COMatePLUS, киньте ссылку может поможет больше понять.
И если кто работал с PureDispHelper и экселем хотелось разобраться с вопросами:
1) Какой смысл имеют первые две строчки в проге приведенной ниже(это взято с примеров по PureDispHelper для экселя).
2) зачем это ставить EnableExplicit и потом мучаться, все переменные в начале объявлять.
3) Мне нада прогой сделать:
- (сделал)открыть файл экселя, вывести на экран видимым, как ни странно двумя способами можно открыть файл:
dhCallMethod(EA, ".Workbooks.Open(%s)", @"C:\Лист Microsoft Excel.xls")
; а этот метод позволяет получить результат выполнения и узнать об удаче или неудаче
dhGetValue("%o", @Wo2, EA, ".Workbooks.Open(%s)", @"C:\Лист Microsoft Excel.xls")

- (неполучается)найти определенный лист по имени и отрыть его,
- (частично)прочитать значения ячеек и вставить в другие ячейки, а в эти внести даные с текстовых файлов.
Прочитать значения ячеек получается но только числовые(целые и дробные), а вот строковые никак, выдает всякий бред.
Вот пример считать значение ячейки и записать в соседнюю переменная s2.s содержит бред который изменяестя в зависимости од того, что в ячейке записано.
dhGetValue("%T", @s2.s, ExcelApp, "Cells(%d, %d).Value", 1, 3):;Debug s2
dhPutValue(ExcelApp, "Cells(%d, %d).Value = %T", 1, 4, @s2.s)

- и еще как узнать тип даных в ячейке текстовой или числовой и формат числа


4) на сайте есть немного по экселю наверное на VBA http://odinesnik.su/osnovnye_metody_rab ... cel_iz_1s/ , часть реализовал, а как это(ниже написан список) реализовать несмог понять, ничего неполучилось, что смог рзобрать написал в проге.
Добавляем новый лист:1 Лист = Книга.WorkSheets(1);
Сохраняем файл:Книга.SaveAs(ПутьДляСохранения);
Указание нужного листа:Лист = Книга.WorkSheets(1); // Выбор первого листа.
Выбрать лист по имени:Лист = Книга.WorkSheets("Номенклатура");
Защищаем лист от изменений. Лист.Protect()
Выделение области (нескольких ячеек): Лист.Range("A4:AD4")
Выделение определённой ячейки: Ячейка = Лист.Cells(1, 1);
это неработает- dhPutValue(ExcelApp, ".Cells(%d, %d)", 2, 2)
Добавление формулы в ячейку: Ячейка.FormulaR1C1 = "=RC[2]*RC[-2]"
тут как другие ячейки указывать.
Возможно есть более простое решение этого всего?
Заранее благодарен.

с другого сайта: FormulaR1C1 ,Формула в формате R1C1. Например,
Range("B1").FormulaR1C1 = "=R1C1+1"
пробую так, но вписывает неверно в эксель:
dhPutValue(ExcelApp, "Range(%T).FormulaR1C1= %T", @"B8",@"=R1C1+1")

_________________
искатель истины


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Библиотека PureDisphelper
СообщениеДобавлено: Чт июн 08, 2017 12:18 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11255
Благодарил (а): 4 раз.
Поблагодарили: 429 раз.
balex1978 писал(а):
все ссылки устарели
Можно здесь посмотреть http://www.rsbasic.de/backups/
Там есть Excel_Writer105.

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Библиотека PureDisphelper
СообщениеДобавлено: Чт июн 08, 2017 1:26 pm 
Не в сети
профессор

Зарегистрирован: Пт фев 20, 2009 12:57 pm
Сообщений: 1694
Откуда: Алматы
Благодарил (а): 15 раз.
Поблагодарили: 46 раз.
Пункты репутации: 5
http://www.rsbasic.de/backupprogramme/COMatePLUS.zip


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Библиотека PureDisphelper
СообщениеДобавлено: Ср июн 14, 2017 1:19 am 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Пн ноя 27, 2006 2:43 pm
Сообщений: 932
Откуда: Санкт-Петербург
Благодарил (а): 1 раз.
Поблагодарили: 12 раз.
Пункты репутации: 15
balex1978 писал(а):
Думал поискать на COMatePLUS viewtopic.php?f=18&t=2841&hilit=Excel,
ExcelFunktion.pbi и ExcelConstants.pbi но все ссылки устарели выдает "ERROR 404: Datei nicht vorhanden",


Убрал неработающие ссылки в теме http://purebasic.info/phpBB3ex/viewtopi ... =18&t=2841
добавил ExcelFunktion.pbi и ExcelConstants.pbi в виде вложения.


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 30 ]  На страницу Пред.  1, 2

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: Bing [Bot] и гости: 5


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB