Jeśli zewnętrzny program nie ma wystawionego api i musisz programowo odtworzyć klikanie po nim i lub czytanie z niego zmian to najlepsze prawdopodobnie będzie Selenium do tego
Bardzo ciekawe narzędzie, nie znałem tego
najpewniej było by podejrzeć całą komunikację między przeglądarką a programem i zaimplementować ją po stronie delphi, ale to żmudna robota będzie
Chyba właśnie o to mi chodzi, z tym ze nie mam koncepcji jak to podejrzeć i ogarnąć po stronie Delphi
o "klikaniu" na stronie było kilka dni temu
TWebBrowser - GetElementsByTagName - uniwersalna metoda dla kazdego obiektu/znacznika
jeśli to wystarczy to ok, ale wydaje mi się że to mało elegancka metoda.
Czytałem ten wątek i zgadzam się jest to mało elegancja metoda ale jak nie wymyśle nic lepszego to skorzystam z tego
Poniżej kawałki kodu które sobie zaznaczyłem
(window.ui, jQuery);
! function() {
function e(e) {
return "administrator" !== e.toLowerCase()
}
var o = null,
t = function() {
function e() {
var e = n.GetCachedUsername(),
o = n.GetCachedPassword();
isDot2() && (e = "remote"), o = o === md5("") ? "" : r, e ? o || (o = "") : (e = "", o = "");
var u = 0;
s ? ($("#" + a, s).val(e), $("#" + l, s).val(o), u = {
overlay: i,
control: s,
modalWindow: !0
}) : u = isDot2() ? {
overlay: i,
title: "Login",
modalWindow: !0,
textboxes: [{
id: l,
text: "Password:",
type: "password",
value: o,
focused: !0,
autoSelect: !0
}],
buttons: [{
id: "loginSubmit",
type: "custom",
text: "Login"
}],
formSubmitHandler: function(e, o) {
e.preventDefault();
var r = "remote",
i = t(o[l]);
return n.SetUserData(r, i), n.sendLoginRequest(r, i), !1
Tu raczej jest logowanie no ale to i tak mam za mało wiedzy o javascript
c.prototype.__sliderMoved = function(e, t) {
this.m_commandExecutor.send({
requestType: Server.requestTypes.playbacks_userInput,
execIndex: t.execIndex,
pageIndex: this.pagesNavigationBar.getPagesData().index,
faderValue: t.value,
type: 1
}), log("Slider " + t.execIndex + " was moved. Value: " + t.value)
}, c.prototype.__buttonPressed = function(e, t) {
this.m_commandExecutor.send({
requestType: Server.requestTypes.playbacks_userInput,
cmdline: this.m_commandLine.getText(),
execIndex: t.execIndex,
pageIndex: this.pagesNavigationBar.getPagesData().index,
buttonId: t.buttonId,
pressed: t.pressed || !1,
released: t.released || !1,
type: 0
}), log("Button " + t.buttonId + "." + t.execIndex + " pressed")
a tutaj raczej jest obsługa przycisków i suwaków.
W załączniku pliki js dla chcących podejrzeć i coś podpowiedzieć w jakim kierunku iść, albo co przeanalizować