PDA

Pogledaj cijelu verziju : [Browser]



C
19-09-2009, 13:01
Evo, počeo sam praviti browser koji se temelji na Windowsu, točnije na njegovom Internet Exploreru i tzv. explorer.exe-u. Tako da se s njime može osim surfati i skidati stvari (bazirano na IE-u), mogu se otvarati i folderi sa HDD-a, My Computer, određnih particija, pokretati aplikacije, i sl., sve što radite u običnom explorer-u. Ništa specijalno, ali eto, malen, ograničen, moćan, brz, i portabilan programčić za kojeg ne igra uloga gdje se nalazi, dovoljno je da je pokraj browser.exe fajla njegov folder (kojemu je za sda ime autoplay, ali će se tokom verzija zvati browser), i ma gdje on bio, radit će.

Za sada je u verziji 0.9.4.0, i to je ujedno prva verzija.
Ono što sa za sada napravio jest jedan tab (dolje-lijevo), biti će ih više (planiram ih ograničiti na 21), gore-lijevo su opcije back i forward, u sredini-gore address bar, i desno od toga je GO (GO ili Enter u address baru radi isto) i Stop tipka, sve popraćeno zvučnim efektima.
A dolje-desno su tipke about, opcije za internet explorer, minimize (u system tray) i close.

Ono što je za sada interesantno, opcija za internet options na Visti ne radi, a na XP-u radi normalno, iako je kreirana od strane Viste. Nije do programiranj, već do smog exe file-a koji sam napravio. Ako može netko nešto isprogramirati u exe file, da pokreće Internet Options dvoklikom, može mi pomoći oko toga, pošto direktni lnk ne radi u programu.

Nema mogućnost resizeanja (za sada sam ga ograničio na 800×600 rezoluciju), skin je pojednostavljen, nema status bara (bit će ga u sljedećim verzijama)...

Pošto ćete vidjeti da imena tipki (ako držite mišonju malo duže na njemu) izgledaju i textom su za player. Izgled može proći (jedino ako budem pravio neki skin, skin ću napraviti sve na novo, pa tako i tipke), a što se tiče texta, tipa gumb za internet opcije se zove refresh, to neka vas ne buni, bit će popravljeno u sljedećim verzijama, a to mi je još od doba kada sam pravio Player za muziku, i taj projektić je propao, jer nisam znao kako da napravim da može svirati MP3-ce, tako da je sve uzalud.

Dwnload sa instalaciom (ne zapisuje ništa u registry, nema uninstalla, etc., nešto kao extract, a ne install (to sam isto zakukuljio)):
http://radius.server.drivehq.com/zap!soft_browser_installer_v0.9.4.0.exe

Za sada bi mi trebali ljudi koji su voljni ovo testirati i da kažu svoj dojmove.

Luka
19-09-2009, 13:31
Koje jezike/APIe si koristio?

C
19-09-2009, 14:28
Pa iz AutoPlay-a. Ne znam koje on koristi, ali kada ih ukucavaš ti pomaže, pa ne moraš imati cjeli code u glavi. :D Pokušao sam i VB, ali više od windowsa za IE, adress bara i tipke "go", nisam prešao. Osim programa i "unknown" jezika (XD), koristio sam neke infekcije (točnije trojance), ali ne morate se bojati, nije inficirano. :)

Luka
19-09-2009, 14:44
Pa iz AutoPlay-a.

AutoPlay?

Što je to?

C
19-09-2009, 15:15
Pa AutoPlay Media Studio.
http://www.indigorose.com/autoplay-medi ... ia-studio/ (http://www.indigorose.com/autoplay-media-studio/overview-autoplay-media-studio/)
Samo ja imam uber stari već preko 4 i pol godine koji nema puno opcija, pa se moram snalaziti tražeći kodove. Namjenjen je za izradu autoplay-eva za CD/DVD-e i sl. medije, ali ako ga uzmeš u ruke kao ja, možeš njime napraviti audio/video player, ili čak browser kao ja sada, ono što ne možeš, to trojanci lako "hackiraju" (i tada nije riječ o čraćku, već code programa direktno izmjenjuješ). A sada, koji on code koristi za izradu, ne bih znao, ali na netu možeš naći puno njih. Evo ti već neke, pa ako uspiješ skontati, reci koji je to jezik :D :

Files = {"AutoPlay\\Audio\\1.mp3", "AutoPlay\\Audio\\2.mp3", "AutoPlay\\Audio\\3.mp3"};
Selected = ListBox.GetSelected("ListBox1") -- Case sensitive.

if (Selected and Selected[1]) then
Audio.Load(CHANNEL_USER1, Files[Selected[1]], true, false);
end
Evo brzinski c/p za http download i još ponešto, njih par:

real_password = "";

user_password = Dialog.PasswordInput("Password", "Please enter the password: ", MB_ICONQUESTION);

if real_password ~= user_password then
Application.Exit();
end

sURL = ""; -- where you'll download from
sDestination = ""; -- Where the files should be 'installed' to
sZipPassword = ""; -- the password to your zip file (or "" for no password)

sDownloadFolder = _TempFolder .. ""; -- temp location to download to
sDownloadFileName = ""; -- Temp filename to use
nDownloadMode = MODE_BINARY; -- The download mode to use
nTimeout = 20; -- The timeout in seconds for your http server
nPort = 80; -- The port your http server uses
tProxyData = nil; -- a table of proxy data (nil for none)
tAuthData = nil; -- A table of http auth data (nil for none)

nZipOverwrite = ZIP_OVERWRITE_ALWAYS; -- How existing files should be handled
bRecurse = true; -- How zip file recursion should be handled
bUseInternalFolderStructure = true; -- Whether the folder structure in the zip file should be used when extracting
tFilesToExtract = {"*.*"} -- A table of files to extract ({"*.*"} to extract everything




function ZipCallback(sDestinationPath, nPercentage, nStatus)
Label.SetText("L_Status2", "Installing:");
if nStatus == ZIP_STATUS_MAJOR then
Progress.SetCurrentPos("Progress2", nPercentage);
UpdateOverallTaskProgress(2, nPercentage);
Progress.SetText("Progress2", "Installing (" .. nPercentage .. "%)");
end
return true;
end


function HTTPCallback (nBytesRead, nFileSize, nTransferRate, nSecondsLeft, sSecondsLeftFormat, sMessage)
if sMessage == "" then
Label.SetText("L_Status2", "Downloading:");
nPercent = Math.Round((nBytesRead/nFileSize)*100,0);
Progress.SetCurrentPos("Progress2", nPercent);
Progress.SetText("Progress2", nPercent .. "%");
UpdateOverallTaskProgress(1, nPercent);
end

return true;
end


unctions
function UpdateOverallTaskProgress (nTaskNumber, nTaskPercentComplete)
nTotalTasks = 2;
Progress.SetRange("Progress1", 1, 100*nTotalTasks);
Progress.SetCurrentPos("Progress1", (nTaskNumber-1)*100 + nTaskPercentComplete);
end

function CheckError(sOptionalMessage)
err = Application.GetLastError();
if err ~= 0 then
if sOptionalMessage then
sTitle = "ERROR (" .. sOptionalMessage .. ")";
sMessage = err .. ": " .. _tblErrorMessages[err];
else
sTitle = "ERROR";
sMessage = err .. ": " .. _tblErrorMessages[err];
end
Dialog.Message(sTitle, sMessage);
end
end






Folder.Create(sDownloadFolder);
CheckError("Folder.Create");

HTTP.Download(sURL, sDownloadFolder .. "\\" .. sDownloadFileName, nDownloadMode, nTimeout, nPort, tHTTPAuth, tProxyData, HTTPCallback);
CheckError("HTTP.Download");

Folder.Create(sDestination);
CheckError("Folder.Create");

Zip.Extract(sDownloadFolder .. "\\" .. sDownloadFileName, tFilesToExtract, sDestination, bRecurse, bUseInternalFolderStructure, sZipPassword, nZipOverwrite, ZipCallback);
CheckError("Zip.Extract");

File.Delete(sDownloadFolder .. "\\" .. sDownloadFileName, false, false, false, nil);
CheckError("File.Delete");

Folder.Delete(sDownloadFolder);
CheckError("Folder.Delete");

Progress.SetText("Progress1", "");
Progress.SetText("Progress2", "");
Progress.SetCurrentPos("Progress1", 0);
Progress.SetCurrentPos("Progress2", 0);
Label.SetText("L_Status2", "");


function HTTPCallback (nBytesRead, nFileSize, nTransferRate, nSecondsLeft, sSecondsLeftFormat, sMessage)
if sMessage == "" then
local strkbs = string.format("%.2f",nTransferRate);
Label.SetText("L_Status2", "Downloading: ".." - Transfer Rate: "..strkbs.." kb/s");
nPercent = Math.Round((nBytesRead/nFileSize)*100,0);
Progress.SetCurrentPos("Progress2", nPercent);
Progress.SetText("Progress2", nPercent .. "%".." - Transfer Rate: "..strkbs.." kb/s");
UpdateOverallTaskProgress(1, nPercent);
end
return true;
end


HTTP.Download("", "", MODE_BINARY, 20, 80, nil, nil, nameOfCallback);
function DownloadCallback (nDownloaded, nTotal, TransferRate, SecondLeft, SecondsLeftFormat, Message)
sDownloaded = String.GetFormattedSize(nDownloaded, FMTSIZE_AUTOMATIC, true);
sTotal = String.GetFormattedSize(nTotal, FMTSIZE_AUTOMATIC, true);

StatusDlg.SetMessage("Currently downloading file . . . Time Left: " .. SecondsLeftFormat);

StatusDlg.SetStatusText("Downloaded: " .. sDownloaded .. " / " .. sTotal);

StatusDlg.SetMeterPos((nDownloaded / nTotal) * 65534);
end



StatusDlg.Show(0, false);

StatusDlg.SetTitle("Downloading . . . ");

StatusDlg.SetMeterRange(0, 65534);

HTTP.Download("", "", MODE_BINARY, 20, 80, nil, nil, DownloadCallback);

StatusDlg.Hide();

Luka
19-09-2009, 21:29
C++ sa puno #defineova, ili vjerojatnije custom skriptni jezik...

Sve ok, mislio sam da si baš pisao u nećemu...

C
20-09-2009, 01:51
Kao Visual Basic Express 2008. Redaš tipke i to vizualno, ali za svaku opciju trebaš napisati code šta radi, pa je jednostavnije. Nisam još ni s time završio, za sada sam napravio podlogu, ali planiram i isključivanje tipki i to sve, jednostavno je, samo treba puno vremena. Ovo sam radio u jutro od 5, do podne u 12, a nije ništa specijalno. Ima još puno posla. :)

Pored toga, PhotoShop je služio za izradu buttona, i ručno sam pisao html code za home (ništa specijalno, samo reda radi start up-a). Paint će poslužiti ako budem trebao napraviti neki skin.