|
#1
|
||||
|
||||
Вопрос
Ребята помогите вот мой вопрос
Я пишу программу и мне нада чтоб он заходил в папку программы открывал файл и чистил информацию и пересохранял... НО самое главное чтоб пользователь не слидил за ходом событий --------- Смысл моей программы прост я хочу чтоб с помощью ей пользователь удалял с своего компа Windows Messenger Для этого нада 1)Включить отображение скрытых файлов 2)Зайти в папку 3)Открыть файл sysoc.inf 4)Найти строку msmsgs=msgrocm.dll,0cEntry,mgmggs.inf,hide,7 5)Сделать msmsgs=msgrocm.dll,0cEntry,mgmggs.inf,,7 Ну а потом тока пользователю удалить через Установка-Удаление программ-Установка компонентов Виндоуз ------ Задача моя только потренироваться с модулем ShellAPI ---- Я знаю тока как открыть папку и файл если не ошибаюсь так ФАЙЛ- Код:
ShellExecute(Handle,nil,'ПУТЬ',nil,nil,SW_RESTORE); Код:
ShellExecute(Handle,'explore','ПУТЬ',nil,nil,SW_RESTORE); SW_RESTORE -это Активизирует и отображает окно. Если это окно свернуто или развернуто то оно восстанавлмвается до своих первоначальныз размеров и отображается в первоначальной позиции(почти тоже самое что SW_SHOWNORMAL) То если не писать его не видно будет ход действий и как изменять информацию в файле заменять ее в нужном месте и пересохранять... |
#2
|
||||
|
||||
Что-то я не понял. Ты хочешь сделать чтобы пользователь видел все эти действия? Или что?
|
#3
|
||||
|
||||
Я хочу наобарот работус файлов но чтоб пользователь не видел все то что будет произходить
|
#4
|
||||
|
||||
Код:
var sl:TStringList; i:integer; begin sl:=TStringList.Create; sl.LoadFromFile('C:\...\sysoc.inf'); for i:=0 to sl.Count-1 do if pos('msmsgs=msgrocm.dll',sl[i])>0 {как вариант =1} then begin sl[i]:='msmsgs=msgrocm.dll,0cEntry,mgmggs.inf,,7'; break; end; sl.SaveToFile('C:\...\sysoc.inf'); sl.Free; end; Считает файл, заменит требуемую строку, и запишет. Путь естественно указать нужно |
#5
|
||||
|
||||
Ясно а если нужно втереть всю строку то как писать?
|
#6
|
||||
|
||||
Тоесть стереть
|
#7
|
||||
|
||||
Для этого нужно почитать справку по TStrings, много интересного узнаешь.
|
#8
|
||||
|
||||
Народ сори за флуд но кто может дать кряк на Делфи я скачал пару но не пашет
|
#9
|
||||
|
||||
Народ я вот разобрался в одном *удаление файла *
Код:
procedure TForm1.Button1Click(Sender: TObject); var SHFileOpStruct : TSHFileOpStruct; From : array [0..255] of Char; begin SetCurrentDirectory( PChar( 'C:\' ) ); From := 'Test1.tst' + #0 + 'Test2.tst' + #0 + #0; with SHFileOpStruct do begin Wnd := Handle; wFunc := FO_DELETE; pFrom := @From; pTo := nil; fFlags := 0; fAnyOperationsAborted := False; hNameMappings := nil; lpszProgressTitle := nil; end; SHFileOperation( SHFileOpStruct ); end; 1)Он спрашивает пользователя удалять файл в корзину? Как сделать чтоб не спрашивал я хочу чтоб если пользователь нажал кнопку *Удалить ...* оно его не спрашивала 2)Он удаляет в корзину что мешает пользователю так как в кнопке должна служить для очитски не включая корзину.. Как это сделать? |
#10
|
||||
|
||||
Цитата:
1) Оно уже удаляет без карзины 2)Я поставил флаг=0 а надо было прописать FOF_NOCONFIRMATION Если комуто нужно будет делайте |
#11
|
||||
|
||||
Народ Помощь нужна как совместить Console Aplication и Aplication у меня просто в консоле один код и нало его совместить или как прописать этот код в Aplication
Код:
program pfileMode; {$APPTYPE CONSOLE} uses SysUtils; var oldFM: integer; var SR: TSearchRec; begin if FindFirst('C:\*.*', faAnyFile, SR) = 0 then repeat try oldFM := FileMode; FileMode := 0; WriteLn(SR.Name); //работаем с файлом finally FileMode := oldFM; end; until FindNext(SR) < > 0; FindClose(SR); readLn; end. |
#12
|
||||
|
||||
Код:
procedure FindFile(aFileName:TFileName); var SR: TSearchRec; begin if FindFirst(aFileName, faAnyFile, SR) = 0 then repeat //работаем с файлом until FindNext(SR) < > 0; FindClose(SR); end. |
#13
|
||||
|
||||
Спс большое за помощь
|
#14
|
||||
|
||||
Цитата:
FileMod который там самый нужный может я чето не то понял но мне надо получить доступ к системным файлам я это на всякий случай а то вдруг напишет пользователю доступ закрыт а обдурить Windows легче проcтого Windows блокирует ПОЛНЫЙ доступ ко многим файлам, которые в данный момент использует система. К таким файлам относятся выполняемые программы, используемые библиотеки, шрифты и т.д. При поиске вирусов, к примеру, эти файлы представляют наибольший интерес. Обдурить Windows и получить доступ к этим файлам крайне просто - нужно открывать их в режиме ReadOnly. В Delphi за режим открытия файлов отвечает системная переменная FileMode. Boзможные значения: 0 Read only 1 Write only 2 Read/Write По умолчанию FileMode==2, поэтому открытие заблокированых файлов нарывается на неприятность. При доступе ReadOnly доступ блокируется только д так что этот случай приходится контролировать отдельно. Но вот а в кодн что ты написал FileMod'a нет? Мож я чё то не то говарю впринципе ошибк в проекте нет я прописал эту процедуру в код программы но меня *терзают смутные сомнения* |
#15
|
||||
|
||||
А убрал я это потому что не знаю каким образом ты будешь работать с файлом. Переменная FileMode имеет действие только на процедуру Reset и больше ни на что, а с файлами работать можно разными методами, и то это если их открывать, может ты их копировать хотел, или удалять... Телепаты они на другом форуме
|