Za sada ovo sam uradio za manje od sat vremena, znam da ce nekom trebati i manje, ali pre svega nekom ko zeli da se bavi "komercialom", tj da prodaje svoje dragoceno isporgramirane programcice u javi.
#include <windows.h>
LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);
char szClassName[ ] = "Java-Runer-2";
int WINAPI WinMain (HINSTANCE hThisInstance,
HINSTANCE hPrevInstance,
LPSTR lpszArgument,
int nFunsterStil)
{
HWND hwnd;
MSG messages;
WNDCLASSEX wincl;
wincl.hInstance = hThisInstance;
wincl.lpszClassName = szClassName;
wincl.lpfnWndProc = WindowProcedure;
wincl.style = CS_DBLCLKS;
wincl.cbSize = sizeof (WNDCLASSEX);
wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
wincl.lpszMenuName = NULL;
wincl.cbClsExtra = 0;
wincl.cbWndExtra = 0;
wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;
if (!RegisterClassEx (&wincl))
return 0;
hwnd = CreateWindowEx (
0,
szClassName,
"Java-Runer-2",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
544,
375,
HWND_DESKTOP,
NULL,
hThisInstance,
NULL
);
PostQuitMessage (0);
ShellExecute(NULL, "open", "javaw.exe", "-jar test.jex", NULL, SW_SHOW);
return 0;
}
LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_DESTROY:
PostQuitMessage (0);
break;
default:
return DefWindowProc (hwnd, message, wParam, lParam);
}
return 0;
}
Ova linija sluzi da bi pozvala "JAVAW.EXE -jar test.jex", tj, pokrenula na stari dobri nacin:
ShellExecute(NULL, "open", "javaw.exe", "-jar test.jex", NULL, SW_SHOW);
Prepoznajemo je, znaci da iz konzole nebismo kucali "javaw -jar test.jex".
Sta samo mi uopste postigli ovim, ovim se pokrece vas programcic, ali iz fajla (test.jex), sta je to, pa to je ustvari .JAR arhiva ili to je obicna .ZIP arhiva samo sa nekim malim izmenama, tj dopunama. O cemu (o cesmu) se radi? Prvo napravite novi direktorijum pa onda u njemu smestite vase .CLASS fajlove, pa lepo u njemu napravite novi DIR. sa nazivom "META-INF", pa u njemu smestite fajl sa nazivom "META-INF\MANIFEST.MF" koji ima sledeci sadrzaj (napomena: ovo mozete uraditi iz Notepad-a):
Manifest-Version: 1.0
Created-By: 1.4.2_04 (Sun Microsystems Inc.)
Main-Class: Test
Ono "Main-Class" je najvaznije, jer se tu upisuje ime vase main, glavne, klase ali bez nastavka tj. (.CLASS) extenzije Sad lepo izadjete iz META-INF direktorijuma pa opet iz onog vaseg (koji ste kreirali sa vasim nazivom) pa lepo ZIP-ujete ceo dir.
Sada promenite extenziju vase ZIP arhive iz (.ZIP) u (.JEX) , ovo JEX je skraceno od JavaExe, sada mozete lepo da da iskompajlitrate vas C++ exe fajl i da ga smestite u direktorijum gde je "TEST.JEX". I kao sto mozete da vidite samo pokrenite vas EXE fajl.
Eto carolije. Naravno ovo je samo 'draft' verzija, koja je inace samo pokretac, ali prva BETA verzija koja ce pakovati JEX u EXE bice oslobodjena sutra ili prekosutra, nisam siguran kad tacno jer imam dosta ucim. Ako neko ima lep predlog neka slobodno kaze, ja nisam bio aktivan na forumu odavno ali cu se malo angazovati sada.