Windows güncelmi degilmi kontrol etmek.

Forumla ilgili sorularınızı buraya sorabilirsiniz.
Cevapla
saygıner
Üye
Mesajlar: 9
Kayıt: 11 Ağu 2014 02:41

Windows güncelmi degilmi kontrol etmek.

Mesaj gönderen saygıner »

Windows güncellemeleri varmı yokmu bunu nasıl bir timerle 10 dk bir kontrol edip labele yazdırabilirim.
Bu konuda bilgisi olan varmı.
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: Windows güncelmi degilmi kontrol etmek.

Mesaj gönderen SimaWB »

Windows Update Agent API kullanarak bunu yapmak mümkün.

Aşağıdaki kod; bulunan güncellemeleri Memo1 içine yazar:

Kod: Tümünü seç

procedure  TForm1.Button1Click(Sender: TObject);
var
  updateSession        : OleVariant;
  updateSearcher       : OleVariant;
  updateSearchResult   : OleVariant;
  updateEntry          : OleVariant;
  UpdateCollection     : OleVariant;
  oEnum                : IEnumvariant;
  iValue               : LongWord;
begin
  updateSession:= CreateOleObject('Microsoft.Update.Session');
  updateSearcher := updateSession.CreateUpdateSearcher;
  
  updateSearchResult:= updateSearcher.Search(Format('IsInstalled = 0 and Type=%s',[QuotedStr('Software')]));
  UpdateCollection  := updateSearchResult.Updates;
  oEnum         := IUnknown(UpdateCollection._NewEnum) as IEnumVariant;
  while oEnum.Next(1, updateEntry, iValue) = 0 do
  begin
    Memo1.Lines.Add(updateEntry.Title);
    updateEntry:=Unassigned;
  end;
end;
Bilgisayarda daha önceden yapılmış güncellemeleri listelemek istersen IsInstalled = 1 yapıp kullanırsın.

Güncellemeleri listelemeyip, sadece güncelleme var mı yok mu kontrolü yapmak istersen:

Kod: Tümünü seç

function GuncellemeVarMi: boolean;
var
  updateSession        : OleVariant;
  updateSearcher       : OleVariant;
  updateSearchResult   : OleVariant;
begin
  updateSession:= CreateOleObject('Microsoft.Update.Session');
  updateSearcher := updateSession.CreateUpdateSearcher;  
  updateSearchResult:= updateSearcher.Search(Format('IsInstalled = 0 and Type=%s',[QuotedStr('Software')]));
  Result := updateSearchResult.Updates.Count > 0;
end;
There's no place like 127.0.0.1
saygıner
Üye
Mesajlar: 9
Kayıt: 11 Ağu 2014 02:41

Re: Windows güncelmi degilmi kontrol etmek.

Mesaj gönderen saygıner »

Güncellemeleri listelemeyip, sadece güncelleme var mı yok mu bunu labele nasıl yazdırabilirim , bu fonsiyonu kullanarak
ayrıca hata veriyor.
[Error] Unit1.pas(34): Undeclared identifier: 'IEnumvariant'
saygıner
Üye
Mesajlar: 9
Kayıt: 11 Ağu 2014 02:41

Re: Windows güncelmi degilmi kontrol etmek.

Mesaj gönderen saygıner »

dostum sadece güncelleme varmı yokmu o fonsiyonu çalıştıramadım labelde nasıl gösterecem. teşekkürler yardımın için
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: Windows güncelmi degilmi kontrol etmek.

Mesaj gönderen SimaWB »

Kusura bakmayın ama biraz da siz gayret gösterseniz. Vakit ayırıp size burada yardımcı olmaya çalışanlara haksızlık ediyorsunuz :!:

Size Boolean değer döndüren bir fonksiyon yazmışım (Boolean ne demek onu bildiğinizi varsayıyorum) ve bunun sonucunda bir label'a "var" yada "yok" nasıl yazdırırım diye soruyorsanız; Windows Update Agent API kullanmayı falan unutun. Öncelikle güzel bir Delphi kitabı alıp baştan sona okuyun lütfen...

Bu bağlamda biraz araştırma ile IEnumvariant ile ilgili sorunu da çözebileceğinizi düşünüyorum.
There's no place like 127.0.0.1
saygıner
Üye
Mesajlar: 9
Kayıt: 11 Ağu 2014 02:41

Re: Windows güncelmi degilmi kontrol etmek.

Mesaj gönderen saygıner »

çözdüm teşekkürler saol yardımın için.
Cevapla