» »

Funkcija za zapret program

Funkcija za zapret program

Gunny ::

Zanima me kakšen ukaz moram uporabit za zapret word.
V bistvu jaz sm naredu program kateri pri zagonu Worda preverja prisotnost določenih fajlov. Če teli fajli niso prisotni jih ta program iz določene mape kopira in vtavi tam kjer je treba. Problem je sledeči: Program ne mora kopirat failov ker je Word zagnan in uporablja te file. Kaj ve kdo ukaz za zapirat programe.
Vse skupaj sm programiral v Visual Basicu 6.

webblod ::

Hmmmm.... :\ Ni mi jasno, kaj hočeš... ali ti iz svojega programa poženeš Word, ali imaš v svoj Obrazec vstavljen ActiveX Word, ali imaš v Wordu makro?

Če imaš svoj lastni program, potem pač PRED zaganjanjem Worda pač preveriš, ali obstajajo ti določene datoteke, ki jih omenjaš, podobno tudi, če uporabljaš ActiveX, iz VBA bi pa moral poseči po Win32 API...

Skratka, malo bolj natančen opis težave bi prišel prav...:D
There must be a reason, why I'm so damn dissapointed on M$ Visual Basic
WEBblod.NET :: Slovenska programerska scena

Gunny ::

tako je, ta program se zažene ko Zaženem word.
program preveri s funkcijo FileSearch, če obstaja določen file v računalniku(v tem primeru je nek file ki ga vstvari Word ob zagonu preko makra autoexec).
Ta AutoExec je shrajnen v normal.dot ki ima še določene nastavitve Worda.
to sm naredil zato da lahko program preveri če obstaja Macro AutoExec v Normal.dot, ker je veliko pametnih ki obriše Normal dot da bi stem odstranli čudne nastavitve Worda. Če ta makro ne obstaja ne vstvari tega fila ter program ga ne najde in zato mora kopirat Normal dot iz določene mape in ga prilepit tam kjer je traba, sam ker je word zagnam ne mora premestit tega fila ker je v uporabi. Zato rabim funkcijo za zapret Program(Word).

Program.exe je skoraj v delujočem stanju rabim sam funkcijo za zapret s tega programa Word.

Ne me spraševat zakaj to delam sam Šef hoče da je tako:(

Zakompliciral sm ga maksimalno, sam ne vem kako bi ti lahko bolj enostavno opisal problem.

LP

Zgodovina sprememb…

  • spremenil: Gunny ()

webblod ::

hja... če zadevo poženeš s ShellExecute, potem teče v svoji lastni niti, torej lahko mirne duše uporabiš SendMessage funkcijo in ji kot parameter podaš WM_CLOSE... Ročico Worda pa dobiš s funkcijo FindWindow...
There must be a reason, why I'm so damn dissapointed on M$ Visual Basic
WEBblod.NET :: Slovenska programerska scena

Gunny ::

ShellExecute bom uporabu kasneje za ponovni zagon Worda.
Word je zagnan iz svojega Word.exe fila
Sm razmišljal da bi lahko uporabil Funkcijo TaskManager
misliš da bi šlo?
Kaj bi mi znal napisat cel skript za zapret Word?

Thanx.

webblod ::

Kolikor jaz razumem, imamo dva (out of process) serverja, torej dva neodvisna programa. Eden je Word in dugi TvijProgram.exe...

Alora, v Wordu s pomočjo makro-ja najbrž pokličeš tisti svoj program in ta potem preverja potrebno... Glede na to tače v lastni niti, lahko počne kar se mu zljubi, med drugim tudi ubija druge procese... Vse kar moraš storiti je uporabiti funkcijo SendMessage in Wordovemu oknu poslati WM_CLOSE iz tega tvojega lastnega programa, nato prekopirati kar pač že prekopiraš in ponovno pognati Word s funkcijo ShellExecute...

Ni potrebno nič komplicirat...
There must be a reason, why I'm so damn dissapointed on M$ Visual Basic
WEBblod.NET :: Slovenska programerska scena

Gunny ::

kaj mi lahko napišeš en primer kako uporabljati SendMessage in WM_Close?
Nimam help-a pa mi je full bedno:(
Tnx

Zgodovina sprememb…

  • spremenil: Gunny ()

StratOS ::

Uporabi MSDN !!
"Multitasking - ability to f##k up several things at once."
"It works better if you plug it in."
"The one who is digging the hole for the other to fall in is allready in it."

Gunny ::

Sm že našu:D
Zadeva dela.

Tnx

StratOS ::

Ti se pa nekam zelo mučiš okoli tega AutoExec oz. dela start rutine na normal.dot ali kakšnemo koli word fileu !!!, jaz bi ti priporočil, da na mesto tistega tvojega programčka raje enablaš macro protection v Wordu, kajti iskati rutino Autoexec v normal.dot ni tko easy kot si ti misliš, pa še manj zaščiten boš. Raje si nabavi kak AV program.
"Multitasking - ability to f##k up several things at once."
"It works better if you plug it in."
"The one who is digging the hole for the other to fall in is allready in it."

Gunny ::

StarOS: Kaj pa je AV program?

Kar se tiče programiranja, sm začetnik, se pravi da rabim izkušnje in dvomim da bi se kahj naučil če bi sam programčke od drugih uporabljal. Programiranje me veseli, res je da so muke sam se da vse rešit.:\ Program pa se ne nardi v enem dnevu, vem da je zaje**no in rbi mal več časa tudi za buge popravit.

Zgodovina sprememb…

  • spremenil: Gunny ()

StratOS ::

AV je antivirusni program. Za kaj pa natančno potrebuješ program pa lahko napišeš, lahko mi pa napišeš tudi na mail tukaj. Pa točno specificiri problem !
"Multitasking - ability to f##k up several things at once."
"It works better if you plug it in."
"The one who is digging the hole for the other to fall in is allready in it."

jure1873 ::

kaj ve kdo kako se pa killa programe, ki se ne odzivajo več iz vbja?

StratOS ::

tudi ti nič ne specificiraš ...;((
"Multitasking - ability to f##k up several things at once."
"It works better if you plug it in."
"The one who is digging the hole for the other to fall in is allready in it."

Gandalfar ::

evo tule imas eno funkcijo, ki jo jaz uporabljam



function PozeniInCakaj(FileName:String; Visibility, KillInterval : Integer):integer;
var
zAppName:array[0..512] of char;
zCurDir:array[0..255] of char;
WorkDir:String;
StartupInfo:TStartupInfo;
ProcessInfo:TProcessInformation;
begin
StrPCopy(zAppName,FileName);
GetDir(0,WorkDir);
StrPCopy(zCurDir,WorkDir);
FillChar(StartupInfo,Sizeof(StartupInfo),#0);
StartupInfo.cb := Sizeof(StartupInfo);

StartupInfo.dwFlags := STARTF_USESHOWWINDOW;
StartupInfo.wShowWindow := Visibility;
if not CreateProcess(nil,
zAppName, { pointer to command line string }
nil, { pointer to process security attributes }
nil, { pointer to thread security attributes }
false, { handle inheritance flag }
CREATE_NEW_CONSOLE or { creation flags }
NORMAL_PRIORITY_CLASS,
nil, { pointer to new environment block }
nil, { pointer to current directory name }
StartupInfo, { pointer to STARTUPINFO }
ProcessInfo) then Result := -1 { pointer to PROCESS_INF }
else begin
if WaitforSingleObject(ProcessInfo.hProcess,KillInterval*60000) = WAIT_TIMEOUT then
begin
Sleep(100);
TerminateProcess(ProcessInfo.hProcess,Result);
Result := -99;
end;
end;

end;



zadevi poves kateri program naj ti pozene in po kolikem casu naj ti ga ubije, ce se ne zapre sam.

Drugace je pa poanta v tem, da imas pac handle tistega programa in potem pac posljes z TerminateProcess(handle, pa kam nej vrne result)...

this should be enough ^_^

StratOS ::

nekateri pač ne znajo delphija oz. vsaj 2 programska jezika tako kot jaz npr, čeprav je specificiral za
Vse skupaj sm programiral v Visual Basicu 6.
"Multitasking - ability to f##k up several things at once."
"It works better if you plug it in."
"The one who is digging the hole for the other to fall in is allready in it."

Zgodovina sprememb…

  • spremenila: StratOS ()


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

word se mi ne zaganja

Oddelek: Programska oprema
141184 (1093) ABX
»

Čuden problem z Office-ovimi datotekami

Oddelek: Programska oprema
51108 (1054) Ch4N93
»

zaklepanje word dokumenta

Oddelek: Programska oprema
73341 (3226) Highlag
»

Kako zagnati program v želeni prioriteti?

Oddelek: Operacijski sistemi
101843 (1702) tha_man
»

Odpiranje dat.exe v VB

Oddelek: Programiranje
123006 (2799) webblod

Več podobnih tem