Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.01.2011, 18:32   #1
adr
новичек
Пользователь
 
Регистрация: 10.01.2010
Сообщений: 28
Сообщение Программа запускается, но ее не видно....

решил покопаться в куче мусора на компе и нашел код(выложу кусками(не помещается)

все бы ничего, код рабочий, дельфи не ругается, но прога при запуске просто исчезает и ее нигде нету. помогите пожалуйста решить проблему.
Заранее благодарен.
adr вне форума Ответить с цитированием
Старый 25.01.2011, 18:34   #2
adr
новичек
Пользователь
 
Регистрация: 10.01.2010
Сообщений: 28
По умолчанию

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls, Gauges, sGauge, sLabel, sSkinManager,
  ExtCtrls, sButton, sAlphaListBox, acProgressBar, XPMan;

type
  TForm1 = class(TForm)
    sLabel1: TsLabel;
    sLabel2: TsLabel;
    sGauge1: TsGauge;
    sLabel3: TsLabel;
    sLabel4: TsLabel;
    sLabel5: TsLabel;
    sLabel6: TsLabel;
    sGauge2: TsGauge;
    sLabel7: TsLabel;
    sLabel8: TsLabel;
    sLabel9: TsLabel;
    sLabel10: TsLabel;
    sGauge3: TsGauge;
    sButton1: TsButton;
    sListBox1: TsListBox;
    sListBox2: TsListBox;
    XPManifest1: TXPManifest;
    sSkinManager1: TsSkinManager;
    procedure FormCreate(Sender: TObject);
    procedure GetCPUUsage;
    procedure C_Volume;
    procedure D_Volume;
    procedure sButton1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
const
SystemBasicInformation = 0;
SystemPerformanceInformation = 2;
SystemTimeInformation = 3;

type
TPDWord = ^DWORD;

TSystem_Basic_Information = packed record
dwUnknown1: DWORD;
uKeMaximumIncrement: ULONG;
uPageSize: ULONG;
uMmNumberOfPhysicalPages: ULONG;
uMmLowestPhysicalPage: ULONG;
uMmHighestPhysicalPage: ULONG;
uAllocationGranularity: ULONG;
pLowestUserAddress: Pointer;
pMmHighestUserAddress: Pointer;
uKeActiveProcessors: ULONG;
bKeNumberProcessors: byte;
bUnknown2: byte;
wUnknown3: word;
end;

type
TSystem_Performance_Information = packed record
liIdleTime: LARGE_INTEGER;
dwSpare: array[0..75] of DWORD;
end;

type
TSystem_Time_Information = packed record
liKeBootTime: LARGE_INTEGER;
liKeSystemTime: LARGE_INTEGER;
liExpTimeZoneBias: LARGE_INTEGER;
uCurrentTimeZoneId: ULONG;
dwReserved: DWORD;
end;

var
NtQuerySystemInformation: function(infoClass: DWORD;
buffer: Pointer;
bufSize: DWORD;
returnSize: TPDword): DWORD; stdcall = nil;
liOldIdleTime: LARGE_INTEGER = ();
liOldSystemTime: LARGE_INTEGER = ();

function Li2Double(x: LARGE_INTEGER): Double;
begin
Result := x.HighPart * 4.294967296E9 + x.LowPart
end;
////////////////////////////////////////
procedure TForm1.C_Volume;
var
Value_a:string;
Value_b:string;
Value_c:integer;
Value_d:integer;
Value_e:string;
Value_f:extended;
FreeBytesAvailableToCaller: TLargeInteger;
FreeSize_a   : TLargeInteger;
FreeSize_b   : TLargeInteger;
TotalSize_a   : TLargeInteger;
TotalSize_b   : TLargeInteger;
begin
GetDiskFreeSpaceEx( 'c:',
                      FreeBytesAvailableToCaller,
                      Totalsize_a,
                      @FreeSize_a );
Value_a:=FormatFloat('#.',FreeSize_a/1024/1024/1024);
Value_b:=FormatFloat('#.',TotalSize_a/1024/1024/1024);
sLabel3.caption:=Value_b+' GB';
sLabel4.caption:=Value_a+' GB';
Value_c:=strtoint(Value_a);
Value_d:=strtoint(Value_b);
Value_e:=FormatFloat('#',100-Value_c*100/Value_d);
Value_f:=strtofloat(Value_e);
sgauge1.Progress:=strtoint(floattostr(Value_f));
end;
//////////////////////////////////////////////////////
procedure TForm1.D_Volume;
var
Value_a:string;
Value_b:string;
Value_c:integer;
Value_d:integer;
Value_e:string;
Value_f:extended;
FreeBytesAvailableToCaller: TLargeInteger;
FreeSize_a   : TLargeInteger;
FreeSize_b   : TLargeInteger;
TotalSize_a   : TLargeInteger;
TotalSize_b   : TLargeInteger;
begin
GetDiskFreeSpaceEx( 'd:',
                      FreeBytesAvailableToCaller,
                      Totalsize_a,
                      @FreeSize_a );
Value_a:=FormatFloat('#.',FreeSize_a/1024/1024/1024);
Value_b:=FormatFloat('#.',TotalSize_a/1024/1024/1024);
sLabel7.caption:=' '+Value_b+' GB';
sLabel8.caption:=Value_a+' GB';
Value_c:=strtoint(Value_a);
Value_d:=strtoint(Value_b);
Value_e:=FormatFloat('#',100-Value_c*100/Value_d);
Value_f:=strtofloat(Value_e);
sgauge2.Progress:=strtoint(floattostr(Value_f));
end;
adr вне форума Ответить с цитированием
Старый 25.01.2011, 18:34   #3
adr
новичек
Пользователь
 
Регистрация: 10.01.2010
Сообщений: 28
По умолчанию

Код:
/////////////////////////////////////////////////////////////////////


procedure Tform1.GetCPUUsage;
var
SysBaseInfo: TSystem_Basic_Information;
SysPerfInfo: TSystem_Performance_Information;
SysTimeInfo: TSystem_Time_Information;
status: Longint;
dbSystemTime: Double;
dbIdleTime: Double;
Inf: integer;
bLoopAborted : boolean;
begin
if @NtQuerySystemInformation = nil then
NtQuerySystemInformation := GetProcAddress(GetModuleHandle('ntdll.dll'),
'NtQuerySystemInformation');
status := NtQuerySystemInformation(SystemBasicInformation, @SysBaseInfo, SizeOf(SysBaseInfo), nil);
if status <> 0 then Exit;
{--- вставка 1 – сведения о процессоре ---}
{---------}
bLoopAborted := False;
while not bLoopAborted do
begin
status := NtQuerySystemInformation(SystemTimeInformation, @SysTimeInfo, SizeOf(SysTimeInfo), 0);
if status <> 0 then Exit;
status := NtQuerySystemInformation(SystemPerformanceInformation, @SysPerfInfo, SizeOf(SysPerfInfo), nil);
if status <> 0 then Exit;
if (liOldIdleTime.QuadPart <> 0) then
begin
dbIdleTime := Li2Double(SysPerfInfo.liIdleTime) - Li2Double(liOldIdleTime);
dbSystemTime := Li2Double(SysTimeInfo.liKeSystemTime) - Li2Double(liOldSystemTime);
dbIdleTime := dbIdleTime / dbSystemTime;
dbIdleTime := 100.0 - dbIdleTime * 100.0 / SysBaseInfo.bKeNumberProcessors + 0.5;
Inf:= StrToInt(FormatFloat('0',dbIdleTime));
Form1.sGauge3.Progress:=Inf-1;
slistbox1.Clear;
slistbox1.AddItem(inttostr(inf-1)+'%',owner);
slistbox2.AddItem(inttostr(inf-1)+'%',owner);
slistbox2.Items.SaveToFile('CPU.txt');
Application.ProcessMessages;
bLoopAborted := (GetKeyState(VK_ESCAPE) and 128 = 128) or Application.Terminated;
end;
liOldIdleTime := SysPerfInfo.liIdleTime;
liOldSystemTime := SysTimeInfo.liKeSystemTime;
Sleep(500);
end;
end;
////////////////////////////////////////////////


function GetDesktopListViewHandle: THandle;
var
  S: string;
begin
  Result := FindWindow('ProgMan', nil);
  Result := GetWindow(Result, GW_CHILD);
  Result := GetWindow(Result, GW_CHILD);
  SetLength(S, 40);
  GetClassName(Result, PChar(S), 39);
  if PChar(S) <> 'SysListView32' then
    Result := 0;
end;



procedure TForm1.FormCreate(Sender: TObject);
begin
C_Volume;
D_Volume;
form1.ParentWindow := GetDesktopListViewHandle;
form1.ParentColor := false;
GetCPUUsage;
form1.Visible:=true;
Form1.Show;
end;

procedure TForm1.sButton1Click(Sender: TObject);
begin
GetCPUUSage;
end;

end.
adr вне форума Ответить с цитированием
Старый 25.01.2011, 18:46   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

под отладкой не пробовали запускать?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 25.01.2011, 18:51   #5
adr
новичек
Пользователь
 
Регистрация: 10.01.2010
Сообщений: 28
По умолчанию

нет, у меня до этого готовый exeшник был, он работал, потом я заново открыл, решил попробовать скин поставить, опять скомпилировал(тот естественно заменился) и уже не показывает, скин убрал, то же самое(не работает)
adr вне форума Ответить с цитированием
Старый 25.01.2011, 19:39   #6
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Код:
form1.ParentWindow := GetDesktopListViewHandle;
WTF is this?
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 25.01.2011, 19:47   #7
adr
новичек
Пользователь
 
Регистрация: 10.01.2010
Сообщений: 28
По умолчанию

Спасибо всем за помощь, я сам нашел ошибку. Дело было здесь:
Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
C_Volume;
D_Volume;
GetCPUUSage;
form1.ParentWindow := GetDesktopListViewHandle;
form1.ParentColor := false;
end;
просто у меня из-за маленького слипа программа подвисала и не отображалась. я убрал ее и поставил на кнопку и все тип-топ.
Спасибо еще раз за содействие.
adr вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не запускается программа. -=EURO=- Помощь студентам 4 08.01.2011 00:22
Не запускается программа((( katerina2508 Паскаль, Turbo Pascal, PascalABC.NET 4 23.06.2010 13:45
Программа не запускается по F9 sid957 Общие вопросы Delphi 7 12.03.2009 20:28
Не запускается программа Pommity Помощь студентам 4 29.11.2008 18:48
Не запускается программа. Yar Помощь студентам 5 28.08.2008 11:26