Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Kontrolka ActiveX
Forum PHP.pl > Forum > PHP
RubiX
Witam
Mam dziwny problem z kontrolką activeX otóż posiadam drukarkę fiskalną do której producent dołączył kontrolkę activeX orazplikhtml i ocx do sprawdzenia czy wszystko działa. Po zainstalowaniu kontrolki iodpaleniu pliku html z dysku wszytsko działa plik łączy się z drukarką i drukuje paragony. Jednaj po przesłaniu pliku na serwer www i odpaleniu tego pliku z serwera już nic niedziała conajmniej jak by plik html wogle nie widział tej kontrolki (plik html i ocx są w tym samym katalogu na serwerze).
W czym może tkwić problem ?
P.S używam IE
tanwel_programmer
Nie znam się zbyt dobrze na programowaniu kontrolek ale czy przypadkiem activeX nie jest technologią Microsoft? Może poprostu serwer masz na linuxie a linux prawdopodobnie nie obsługuje tego formatu plików. Nie znam się na tym zbyt dobrze ale to chyba to smile.gif
mlattari
Zabezpieczenia IE! Włącz obsługę formantów Active-X (i inne opcje z tym związane) dla danej strefy...

Cytat(tanwel_programmer @ 3.04.2009, 22:04:21 ) *
Nie znam się zbyt dobrze na programowaniu kontrolek ale czy przypadkiem activeX nie jest technologią Microsoft? Może poprostu serwer masz na linuxie a linux prawdopodobnie nie obsługuje tego formatu plików. Nie znam się na tym zbyt dobrze ale to chyba to smile.gif


hmmm to przeglądarka ma obsługiwać formant Active-X a nie serwer :-) To nie php... :-)
tanwel_programmer
OOOOOO dobra ciekawostka. Niestety jeżeli chodzi o ,mnie to activeX to u mnie dno smile.gif
mlattari
Największym dnem jest to, że jesteśmy zmuszeni uzywać IE (exclamation.gif) żeby korzystać z Active-X.... To dopiero dno w dnie!
erix
Cytat
Może poprostu serwer masz na linuxie a linux prawdopodobnie nie obsługuje tego formatu plików. Nie znam się na tym zbyt dobrze ale to chyba to

Nie wiem, czy drukarka udostępnia kontrolkę COM, ale jeśli tak, to masz problem z głowy - instalujesz PHP na kompie z Windows, za pomocą funkcji COM realizujesz druk. winksmiley.jpg
kurt
Odświeżę temat bo napotkałem na ten sam problem, a nie wydaje mi się aby odpowiedzi wyczerpywały zagadnienie.
Problem wygląda tak:
kontrolka ThermalLib.ocx udostępniana prze firmę Posnet, działa poprawnie na komputerach opartych na systemie windows, oraz tylko w plikach html. Wywołanie jej metod w pliku php nie daje rezultatów.
Przykład:
Mam zaimplementowaną kontrolkę w pliku html:
  1. <OBJECT id=ThermalLib height=0 width=0
  2. classid=clsid:904511D2-5407-4033-8DAD-07B33EC7317E><PARAM NAME="_Version" VALUE="65536"><PARAM NAME="_ExtentX" VALUE="26"><PARAM NAME="_ExtentY" VALUE="26"><PARAM NAME="_StockProps" VALUE="0"></OBJECT>


Dostęp do jej metod odbywa się za pomocą funkcji javascript.
Wszystko jest ok, dopóki nie zmienię rozszerzenia pliku na php - działanie kontrolki ustaje jak ręką odjął.

Szukałem w sieci informacji na temat użycia ActiveX w kodzie PHP ale jest tego niewiele, częściowo są wskazówki na użycie klasy COM, ale próbowałem z wymienioną biblioteką i nic nie wychodzi. Czy ma ktoś z Was jakieś rozwiązanie tej kwestii?

Co do umieszczaania na serwerze linuksowym kontrolki ActiveX , to jest ono z góry skazane na porażkę...
erix
Cytat
Szukałem w sieci informacji na temat użycia ActiveX w kodzie PHP ale jest tego niewiele, częściowo są wskazówki na użycie klasy COM, ale próbowałem z wymienioną biblioteką i nic nie wychodzi. Czy ma ktoś z Was jakieś rozwiązanie tej kwestii?

Nie wychodzi, to znaczy? COM przyjmuje jako argument np. CLSID, więc powinno pasować.
kurt
podchodzę do tematu tak:
  1. $com = new COM("ThermalLib.ocx");

I wywala błąd składni:

"Fatal error: Uncaught exception 'com_exception' with message 'Failed to create COM object `ThermalLib.ocx': Nieprawidłowa składnia. ' in D:\xampp\htdocs\test\paragon.php:14 Stack trace: #0 D:\xampp\htdocs\test\paragon.php(14): com->com('ThermalLib.ocx') #1 {main} thrown in D:\xampp\htdocs\test\paragon.php on line 14"


i nie bardzo wiem o co chodzi sad.gif
erix
Eeee, ale masz podać CLSID, a nie nazwę kontrolki. biggrin.gif

Każda zarejestrowana w systemie kontrolka posiada unikalny identyfikator, wg niego jest identyfikowana. Nazwa pliku jest nieistotna.
kurt
Jak już jesteśmy tak blisko to powiedz gdzie znaleźć ten CLSID ? smile.gif
erix
Noż stary biggrin.gif
Cytat
  1. <OBJECT id=ThermalLib height=0 width=0
  2. classid=clsid:904511D2-5407-4033-8DAD-07B33EC7317E>

Naprawdę nie widzisz? tongue.gif
kurt
No to już tylko kroczek smile.gif

jak tego użyć ?
  1. $com = new COM(904511D2-5407-4033-8DAD-07B33EC7317E);

nie działa
tak :
  1. $com = new COM('904511D2-5407-4033-8DAD-07B33EC7317E');

też nie
erix
A zobacz, jakim prefiksem masz to poprzedzone... dry.gif
kurt
Opiszę problem jeszcze raz.

Jest plik HTML z dołączoną biblioteką ThermalLib.ocx :

  1. <OBJECT id=ThermalLib height=0 width=0
  2. classid=clsid:904511D2-5407-4033-8DAD-07B33EC7317E><PARAM NAME="_Version" VALUE="65536"><PARAM NAME="_ExtentX" VALUE="26"><PARAM NAME="_ExtentY" VALUE="26"><PARAM NAME="_StockProps" VALUE="0"></OBJECT>


Wywołanie metod obiektu ThermaLib odbywa się przy pomocy funkcji java script:

  1. <script LANGUAGE="JavaScript">
  2.  
  3. function OpenPort(data) {
  4.  
  5. ThermalLib.THLOpenPort(data)
  6. ThermalLib.THLSendBel()
  7. }


Wszystko działa dopóki nie zmienię pliku na php. Pojawia się komunikat, że "obiekt nie obsługuje tej właściwości lub metody" ze wskazaniem na linię:
  1. ThermalLib.THLOpenPort(data)


Nie wiem czy dołączenie obiektu w stylu HTML ma zastosowanie w przypadku php.
Próby obejścia problemu i użycia COM zakończyły się niepowodzeniem.

Bardzo proszę, jeżeli ktoś ma COŚ do powiedzenia w tym temacie o pomoc.
erix
Cytat
Bardzo proszę, jeżeli ktoś ma COŚ do powiedzenia w tym temacie o pomoc.

Jak widzisz, tematyka kontrolek ActiveX jest szeroko rozprowadzona pośród programistów. Raczyłbyś ruszyć swoje szanowne cztery litery, żeby wygłówkować, że mówiłem o prefixie, ale że dopiero tydzień się zaczyna:

  1. $x = new COM('clsid:904511D2-5407-4033-8DAD-07B33EC7317E');
  2.  
  3. // albo
  4. $x = new COM('{904511D2-5407-4033-8DAD-07B33EC7317E}');


Na przyszłość myśl 3x zanim cokolwiek napiszesz. Zdążyłbyś już znaleźć nawet nazwę klasy z danego OCX-a, gdyż są do tego odpowiednie programy.
kurt
Ech... Młody jesteś to i porywczy, dlatego Ci wybaczam.

Do kontrolki dobrałem się już po nazwie wyciągniętej z rejestru:
  1. $com = new COM('THERMALLIB.ThermalLibCtrl.1');


ale i tak nic to nie dało.
Kontaktowałem się z jej producentem i nie przewidzieli jej do zastosowań w PHP i działa pod HTML oraz w środowisku .NET i VB

W tym konkretnym przypadku szukałem ludzi z doświadczeniem z tą właśnie kontrolką, dlatego Twoje zamykanie tematów i powyższy agresywny ton postu niewiele przynosi.
Ale jak już pisałem nie żywię urazy,
pozdrawiam i łączę wyrazy szacunku.
erix
Jeśli masz mi coś do zarzucenia, to zapraszam na PW. I takie uwagi:
Cytat
Ech... Młody jesteś to i porywczy, dlatego Ci wybaczam.

zachowaj dla siebie 3x zastanawiając się, co piszesz. Masz mi coś wprost do powiedzenia? Namiary na mnie łatwo znaleźć, nie pozwolę sobie na bezpodstawne oczernianie mojej osoby tylko ze względu na mój wiek. Netykieta.

Lenistwa na forum nie toleruję, ale Twoje zagadnienie do prostych nie należy, więc nie zamknąłem od razu tematu.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.