Системная ошибка код 1400 недопустимый дескриптор окна

Вы когда-нибудь сталкивались с системной ошибкой с кодом 1400 в Windows? Что делать, если вы увидели System Error Code 1400? Вот несколько советов для вас.

Системная ошибка с кодом 1400 — «Недопустимый дескриптор окна«. Этот код ошибки может также отображаться как: «ERROR_INVALID_WINDOW_HANDLE» или со значением 0x578.

Во-первых, вы можете перезагрузить ваш компьютер, иногда ошибка появляется случайно, если же перезагрузка не решила проблему, перейдите к следующим шагам.

Вы должны использовать ваш антивирус для сканирования вашего компьютера, вирус может повредить систему и тем самым вызывать ошибку. При обнаружении любого вируса, поместите его в карантин или удалите. Вы можете использовать CCleaner для очистки системы на данном этапе.

Если с помощью антивируса и CCleaner’а вы не избавились от проблемы, проверьте реестр, узнайте, есть ли какие-либо ошибки, если есть, то восстановите его. Можно использовать Reggenie, которая может восстанавливать реестр быстро и безопасно.

Если проблема остаётся, то лучше обратиться к специалистам для решения проблемы.

You have posted a lot of code but not the key, relevant part. Specifically the implementation of your xOnAsyncRequestDone event handler/method (unless it literally only calls that log method that you posted).

This method is being executed in the context of the TMySynHTTPAsync thread and based on the behaviour you are describing — particularly the fact that Synchronize resolves your problem — it is highly likely that some activity in that event handler is creating a window handle.

That window handle is then owned by the HTTP Async thread, not the main application thread (sometimes referred to as the «VCL thread») that is otherwise running your application. When your application closes, the VCL thread performs some final housekeeping, destroying objects and windows etc. if one of those windows was created by some other thread this will cause problems.

Window handles are the strict property of the thread in which they were created. You cannot create a window handle in one thread and then destroy it in another.

NOTE: This is a fundamental of Windows, not Delphi.

Worth noting here is that window handles in VCL can often be created indirectly. You won’t necessarily see an explicit creation of a control that marks the creation of the underlying window handle. It is quite common for window handles only to be actually created when required. Similarly changing the properties of a control can trigger the VCL to attempt to recreate the window for that control, destroying the current one in the process.

It should be fairly apparent that these mechanisms are highly vulnerable to problems that can arise when VCL methods are called by threads other than the VCL thread. This is why you will often here it said that «the VCL is not thread-safe«.

The safest way to operate is to only manipulate VCL objects from code running in the VCL thread itself.

Synchronize to the Rescue

This is in fact precisely why Synchronize exists.

The mechanism that you are invoking by using Synchronize actually works to ensure that the method you are Synchronizing is execute on the VCL thread. If this is in fact creating a window handle then when the VCL thread later comes to destroy that window handle it is quite free to do so since it did in fact create it.

Hence your problem is solved.

Other Options

The Synchronize mechanism is quite complex however, dealing (these days) with cross platform concerns among other things, and as a result may be overkill in this case.

If your code is specific to Windows, a possible alternate solution to this problem may be to exploit the fact that windows allows threads to send (or post) messages to windows in other threads. When those messages are received by those windows, they are then processed by that window’s own thread just as all other messages to those windows are. i.e. you cannot end up interrupting a «click» message received by that window by suddenly jumping across to run the notification from the thread. That notification message simply has to wait it’s turn while the window finishes processing that click message. For example.

You can think of this as a ‘Synchronize’ system «built-in» in to the OS.

So you could, for example, pass a window handle to a form (or control or anything with a window handle) to your HTTP async thread during initialisation, identifying a VCL window that wishes to receive the «request complete» or other notifications from the thread. The thread can then send notifications to that window handle using PostMessage or SendMessage which you could handle either by overriding the WindowProc on the form or using a declared message handler.

If the thread uses SendMessage() to send the notification, then it is automatically suspended and forced to wait until the message is received and processed by the window (in the VCL thread).

If the thread uses PostMessage() then the message is sent asynchronously and the thread can continue with other work without having to wait. The VCL thread will eventually pick up the message and process it.

NOT a Recommendation

This is not to say that I would recommend this alternative in this case. Although it does seem that it might be appropriate given that it does appear to be a simple «work is complete» notification in this case, without a more comprehensive understanding of your specific needs it is impossible to say which is most appropriate.

I mention it only to highlight the fact that alternatives do exist and that the key to safe, reliable threading is to understand the principles and the mechanisms involved.

Crystallon

1 / 1 / 0

Регистрация: 20.06.2011

Сообщений: 55

1

21.06.2011, 09:05. Показов 17170. Ответов 29

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Доброго времени суток.
После того как перенес некоторый код в поток при завершении программы стала вылетать ошибка EOSError 1400 «Недопустимый дескриптор окна». Код программно помещает на форму некоторое количество некоторых компонентов(таких как tlabel, timage, tbutton итп). Когда код был вне потока все было нормально, причина появления ошибки мне совершенно не ясна т.к. код выполняется до конца без ошибок и по идее поток должен при этом завершаться.
Вот этот код:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
procedure TNewThread.Execute;
begin
 
//Çàãðóæàåì äðóçåé
reply_friends:=Form1.HTTPAction('index.php?action=friends&login='+Login+'&pass='+Password);
 
if Pos('<error>', reply_friends) = 0 then begin
friends_count:=StrToInt(Pars('<count>',reply_friends,'<>'));
 
  for element_i2 := 0 to friends_count-1 do
  begin
    friend:=element_i2+1;
    friend_str:=IntToStr(friend);
    friend_id:=Pars('<start>'+friend_str+'<>',reply_friends,'<end>'+friend_str+'<>');
    element_i:=StrToInt(Pars('<id>',friend_id,'<>'));
  //Àâàòàðû
    avatars[element_i] := TImage.Create(nil);
    avatars[element_i].Width := 60;
    avatars[element_i].Height := 60;
    avatars[element_i].Left := 8;
    if element_i2 = 0 then avatars[element_i].Top := 8;
    if element_i2 > 0 then avatars[element_i].Top := 8+(8+avatars[element_i].Height)*element_i2;
    MS:= TMemoryStream.Create;
    PNG := TPNGObject.Create;
    Form1.HTTPActionMS('avatars/'+Pars('<id>',Pars('<start>'+friend_str+'<>',reply_friends,'<end>'+friend_str+'<>'),'<>')+'.png', MS);
    MS.Position := 0;
    PNG.LoadFromStream(MS);
    avatars[element_i].Picture.Assign(PNG);
    MS.Free;
    PNG.Free;
    avatars[element_i].Parent := sScrollBox1;
 
  //Íèê:
    el_nick1[element_i] := TsLabel.Create(nil);
    el_nick1[element_i].Left := 72;
    el_nick1[element_i].Caption := 'Íèê:';
    if element_i2 = 0 then el_nick1[element_i].Top := 8;
    if element_i2 > 0 then el_nick1[element_i].Top := 8+(8+60)*element_i2;
    el_nick1[element_i].Parent := sScrollBox1;
 
  //Íèê
    el_nick2[element_i] := TsLabel.Create(nil);
    el_nick2[element_i].Left := 120;
    el_nick2[element_i].Caption := Pars('<name>',friend_id,'<>');
    if element_i2 = 0 then el_nick2[element_i].Top := 8;
    if element_i2 > 0 then el_nick2[element_i].Top := 8+(8+60)*element_i2;
    el_nick2[element_i].Parent := sScrollBox1;
 
  //Ñòàòóñ:
    el_status1[element_i] := TsLabel.Create(nil);
    el_status1[element_i].Left := 72;
    el_status1[element_i].Caption := 'Ñòàòóñ:';
    if element_i2 = 0 then el_status1[element_i].Top := 24;
    if element_i2 > 0 then el_status1[element_i].Top := 24+(8+60)*element_i2;
    el_status1[element_i].Parent := sScrollBox1;
 
  //Ñòàòóñ
    el_status2[element_i] := TsLabel.Create(nil);
    el_status2[element_i].Left := 120;
    st:=StrToInt(Pars('<status>',friend_id,'<>'));
    if st=0 then el_status2[element_i].Caption := 'Â èãðå';
    if st=1 then el_status2[element_i].Caption := 'Â ñåòè';
    if st=2 then el_status2[element_i].Caption := 'Îòøåë';
    if st=3 then el_status2[element_i].Caption := 'Çàíÿò';
    if st=4 then el_status2[element_i].Caption := 'Îòêëþ÷åí îò ñåòè';
    if element_i2 = 0 then el_status2[element_i].Top := 24;
    if element_i2 > 0 then el_status2[element_i].Top := 24+(8+60)*element_i2;
    el_status2[element_i].Parent := sScrollBox1;
 
  //Èãðà:
    el_game1[element_i] := TsLabel.Create(nil);
    el_game1[element_i].Left := 72;
    el_game1[element_i].Caption := 'Èãðà:';
    if element_i2 = 0 then el_game1[element_i].Top := 40;
    if element_i2 > 0 then el_game1[element_i].Top := 40+(8+60)*element_i2;
    el_game1[element_i].Parent := sScrollBox1;
 
  //Èãðà
    el_game2[element_i] := TsLabel.Create(nil);
    el_game2[element_i].Left := 120;
    el_game2[element_i].Caption := Pars('<game>',friend_id,'<>');
    if element_i2 = 0 then el_game2[element_i].Top := 40;
    if element_i2 > 0 then el_game2[element_i].Top := 40+(8+60)*element_i2;
    el_game2[element_i].Parent := sScrollBox1;
 
  //Ñåðâåð:
    el_server1[element_i] := TsLabel.Create(nil);
    el_server1[element_i].Left := 72;
    el_server1[element_i].Caption := 'Ñåðâåð:';
    if element_i2 = 0 then el_server1[element_i].Top := 56;
    if element_i2 > 0 then el_server1[element_i].Top := 56+(8+60)*element_i2;
    el_server1[element_i].Parent := sScrollBox1;
 
  //Ñåðâåð
    el_server2[element_i] := TsLabel.Create(nil);
    el_server2[element_i].Left := 120;
    el_server2[element_i].Caption := Pars('<server>',friend_id,'<>');
    if element_i2 = 0 then el_server2[element_i].Top := 56;
    if element_i2 > 0 then el_server2[element_i].Top := 56+(8+60)*element_i2;
    el_server2[element_i].Parent := sScrollBox1;
 
  //Êíîïêà ìåíþ
    el_menu_btn[element_i] := TsButton.Create(form10);
    el_menu_btn[element_i].Left := 220;
    el_menu_btn[element_i].Caption := '^';
    el_menu_btn[element_i].Width := 17;
    el_menu_btn[element_i].Height := 17;
    el_menu_btn[element_i].Tag := StrToInt(Pars('<id>',friend_id,'<>'));
    el_menu_btn[element_i].OnClick:=Form10.onbtn;
    if element_i2 = 0 then el_menu_btn[element_i].Top := 8;
    if element_i2 > 0 then el_menu_btn[element_i].Top := 8+(8+60)*element_i2;
    el_menu_btn[element_i].Parent := sScrollBox1;
 
  //ID
    el_id[element_i] := StrToInt(Pars('<id>',friend_id,'<>'));
 
  end;
 
sLabel1.Caption:='';
end
else
begin
sLabel1.Caption:=Pars('<error>',reply_friends,'<>');
end;
 
Form10.Loading_Anim.Visible:=false;
Form10.Loading_Anim.Animate:=false;
end;

Подскажите пожалуйста что в этом коде может вызывать эту ошибку?
Заранее спасибо.
P.S. Мб мысль глупая но всеже — а не может это быть из за того что если динамически создавать объекты в потоке то поток не завершиться после выполнения и будет продолжать жить пока эти объекты существуют?



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

21.06.2011, 09:05

Ответы с готовыми решениями:

‘System Error. Code: 1400. Недопустимый дескриптор окна’
Пишу многопоточную программу, а при ее закрытии после работы потоков выдает эту ошибку, из-за чего…

Недопустимый дескриптор окна =)
Все пашет вот только… Обьясняю))) В общем Основное Приложение вызывает SendPPMsg из DLL и все…

В каждом слове текста замените «а» на букву «е», если «а» стоит на четном месте, и заменить букву «б» на сочетание «ак»,
В каждом слове текста замените &quot;а&quot; на букву &quot;е&quot;, если &quot;а&quot; стоит на четном месте, и заменить букву…

Из слов «Работа», «крест», «тон» составить фразу «Кто не работает, тот не ест» и определить ее длину
Из слова &quot;Работа&quot;,&quot;крест&quot;,&quot;тон&quot; составить фразу:&quot;Кто не работает, тот не ест&quot; и определить ее длину.

29

16 / 16 / 3

Регистрация: 14.06.2011

Сообщений: 64

21.06.2011, 09:16

2

Какая связь из Form10. Возможно при обращении к форме она не create.



1



Crystallon

1 / 1 / 0

Регистрация: 20.06.2011

Сообщений: 55

21.06.2011, 09:49

 [ТС]

3

Запуск потока происходит внутри той самой form10 по ее onshow т.ч. невозможно, полюс как я уже сказал код выполняется до конца без ошибок(я это проверил поставив в конец кода showmessage).

Добавлено через 29 минут
Нашел то что вызывает ошибку, эта строчка:

Delphi
1
el_menu_btn[element_i].Parent := sScrollBox1;

Но почему? У остальных компонентов родительским точно также является sScrollBox1…



0



16 / 16 / 3

Регистрация: 14.06.2011

Сообщений: 64

21.06.2011, 09:50

4

К компонентам которые динамически созданы обращаетесь не из потока?
Желательно бы увидеть код где запускается поток и что там еще делается.



1



Crystallon

1 / 1 / 0

Регистрация: 20.06.2011

Сообщений: 55

21.06.2011, 10:04

 [ТС]

5

Нет обращаюсь не из потока, код который выше привел это полный код этого потока. Запускается поток из onshow как я уже говорил, вот код:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
procedure Tform10.FormShow(Sender: TObject);
begin
Button1.SetFocus;
Timer1.Enabled:=true;
 
//Çàãðóæàåì ñâîè äàííûå
sLabel3.Caption:=auth_name;
image1.Picture:=form2.avatar.picture;
sComboBox1.ItemIndex:=Form2.sComboBox1.ItemIndex;
if auth_gamed <> '1' then begin
sLabel2.Caption:='';
sLabel8.Caption:='';
end;
if auth_gamed = '1' then begin
sLabel2.Caption:='Íå îïðåäåëåíî';
sLabel8.Caption:='Íå îïðåäåëåíî';
end;
 
if last_update_friends < time then begin
  Loading_Anim.Animate:=true;
  Loading_Anim.Visible:=true;
  TNewThread.Create(false);
 
  last_update_friends:=time+(1/(24*3600))*15;
  
  //Óäàëÿåì âñå ýëåìåíòû
  sScrollBox1.Free;
 
//ScrollBox
  sScrollBox1 := TsScrollBox.Create(Form10);
  sScrollBox1.Left := 16;
  sScrollBox1.Top := 88;
  sScrollBox1.Width := 265;
  sScrollBox1.Height := 361;
  sScrollBox1.HorzScrollBar.Visible := false;
  sScrollBox1.VertScrollBar.ButtonSize := 5;
  sScrollBox1.AutoMouseWheel := true;
  sScrollBox1.TabOrder := 1;
  sScrollBox1.Parent := Form10.sPanel1;
 
//sLabel1
  sLabel1 := TsLabel.Create(Form10);
  sLabel1.Left := 8;
  sLabel1.Width := 3;
  sLabel1.Height := 13;
  sLabel1.Top := 8;
  sLabel1.Parent := sScrollBox1;
end;
end;



0



MiheyJumaric

16 / 16 / 3

Регистрация: 14.06.2011

Сообщений: 64

21.06.2011, 10:16

6

Delphi
1
TNewThread.Create(false);

после

Delphi
1
2
3
4
5
6
7
8
9
10
sScrollBox1 := TsScrollBox.Create(Form10);
  sScrollBox1.Left := 16;
  sScrollBox1.Top := 88;
  sScrollBox1.Width := 265;
  sScrollBox1.Height := 361;
  sScrollBox1.HorzScrollBar.Visible := false;
  sScrollBox1.VertScrollBar.ButtonSize := 5;
  sScrollBox1.AutoMouseWheel := true;
  sScrollBox1.TabOrder := 1;
  sScrollBox1.Parent := Form10.sPanel1;



1



deathNC

1904 / 1015 / 123

Регистрация: 08.12.2009

Сообщений: 2,792

Записей в блоге: 2

21.06.2011, 10:22

7

Ничего не пойму:

Delphi
1
2
3
4
5
6
TNewThread.Create(false);
 
  last_update_friends:=time+(1/(24*3600))*15;
  
  //Удаляем все элементы
  sScrollBox1.Free;

Тут что? Создаётся поток, и не известно, успеет он всё сделать, не успеет — всё равно sScrollBox1 сносим, а поток будет продолжать в несуществующий sScrollBox1 пихать компоненты?
Или я что-то путаю?



1



1 / 1 / 0

Регистрация: 20.06.2011

Сообщений: 55

21.06.2011, 10:22

 [ТС]

8

Ппц я и правда идиот… Странно что тут вообще чето работало… А еще странно то что это исправление ошибку не устранило. И еще один момент забыл написать — на форме все динамически созданные объекты показываются нормально, а вот эта злосчастная кнопка из за которой вылетает ошибка не показывается.
deathNC
да да я идиот xD хз каким волшебным образом но несморя на то что я такую глупую ошибку допустил он успевал xD но проблема все равно осталась после исправления этой глупой ошибки =
Тут дело в том что открытие 10 формы предусмотрено не 1 разовое и данные там меняются, по этому при показе формы скорллбокс со всем содержимым стирается и создается заново если с момент последнего показа формы прошло более 15 секунд, вобщем я просто запуск потока поставил до абсурдности неправильно)



0



deathNC

21.06.2011, 10:26

Не по теме:

Crystallon, если при сносе компонентов через метод Free будет ошибка, то пробуй сносить через Destroy :)
Это просто на будущее :D



1



MiheyJumaric

16 / 16 / 3

Регистрация: 14.06.2011

Сообщений: 64

21.06.2011, 10:26

10

Delphi
1
2
//Кнопка меню
    el_menu_btn[element_i] := TsButton.Create(form10);

на

Delphi
1
2
//Кнопка меню
    el_menu_btn[element_i] := TsButton.Create(nil);



1



1904 / 1015 / 123

Регистрация: 08.12.2009

Сообщений: 2,792

Записей в блоге: 2

21.06.2011, 10:28

11

А с этим проектом — отдельную процедуру писать, в которую перенести всё, что после запуска потока и запустить её по завершению потока. Это если другими путями не справишься!



1



Crystallon

1 / 1 / 0

Регистрация: 20.06.2011

Сообщений: 55

21.06.2011, 10:30

 [ТС]

12

Цитата
Сообщение от MiheyJumaric
Посмотреть сообщение

Delphi
1
2
//Кнопка меню
    el_menu_btn[element_i] := TsButton.Create(form10);

на

Delphi
1
2
//Кнопка меню
    el_menu_btn[element_i] := TsButton.Create(nil);

Уже пробовал, также пробовал всем остальным компонентам поставить form10 вместо nil, вообще ничего не меняется.

Цитата
Сообщение от deathNC
Посмотреть сообщение

А с этим проектом — отдельную процедуру писать, в которую перенести всё, что после запуска потока и запустить её по завершению потока. Это если другими путями не справишься!

Ды эт я понимаю, в том то и дело что там ничего не должно быть после запуска потока, я просто не туда его запуск поставил

А вообще это бред какойто…чем tbutton хуже других компонентов что приводит к такой проблеме…ведь его создание полностью аналогично созданию других компонентов…



0



1904 / 1015 / 123

Регистрация: 08.12.2009

Сообщений: 2,792

Записей в блоге: 2

21.06.2011, 10:35

13

Проверь индексы element_i и типы элементов. МОж не то что-то написал. А то поди el_menu_btn у тебя как TButton какой-нибудь объявлен, а создаёшь TSButton



1



Crystallon

1 / 1 / 0

Регистрация: 20.06.2011

Сообщений: 55

21.06.2011, 10:36

 [ТС]

14

Цитата
Сообщение от deathNC
Посмотреть сообщение

Проверь индексы element_i и типы элементов. МОж не то что-то написал. А то поди el_menu_btn у тебя как TButton какой-нибудь объявлен, а создаёшь TSButton

Это в первую очередь проверил, каждую строчку сверил =
Плюс к тому я код просто скопировал из onshow, он раньше там был а не в потоке и нормально работал
И методом коментирования строчек и групп строчек я точно определил что если все оставить как есть и закомменить одну лишь строчку

Delphi
1
el_menu_btn[element_i].Parent := sScrollBox1;

ошибка уже не возникает, но кнопки на форме по прежнему отсутствуют, и еслиб они там были при этом то было бы очень странно)



0



deathNC

1904 / 1015 / 123

Регистрация: 08.12.2009

Сообщений: 2,792

Записей в блоге: 2

21.06.2011, 10:45

15

Попробуй

Delphi
1
Form10.InsercControl([COLOR="DimGray"]<<<твой компонент>>>[/COLOR])ж



1



Crystallon

1 / 1 / 0

Регистрация: 20.06.2011

Сообщений: 55

21.06.2011, 10:49

 [ТС]

16

Цитата
Сообщение от deathNC
Посмотреть сообщение

Попробуй

Delphi
1
Form10.InsercControl([COLOR="DimGray"]<<<твой компонент>>>[/COLOR])ж
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
    el_menu_btn[element_i] := TsButton.Create(Form10);
    el_menu_btn[element_i].Left := 220;
    el_menu_btn[element_i].Caption := '^';
    el_menu_btn[element_i].Width := 17;
    el_menu_btn[element_i].Height := 17;
    el_menu_btn[element_i].Tag := StrToInt(Pars('<id>',friend_id,'<>'));
    el_menu_btn[element_i].OnClick:=Form10.onbtn;
    if element_i2 = 0 then el_menu_btn[element_i].Top := 8;
    if element_i2 > 0 then el_menu_btn[element_i].Top := 8+(8+60)*element_i2;
    el_menu_btn[element_i].Parent := sScrollBox1;
 
    Form10.InsertControl(el_menu_btn[element_i]);

Ничего не изменилось =



0



deathNC

1904 / 1015 / 123

Регистрация: 08.12.2009

Сообщений: 2,792

Записей в блоге: 2

21.06.2011, 10:51

17

А

Delphi
1
el_menu_btn[element_i].Show;

если есть такое конечно



1



1 / 1 / 0

Регистрация: 20.06.2011

Сообщений: 55

21.06.2011, 10:53

 [ТС]

18

Есть) но все как было так и осталось =



0



deathNC

1904 / 1015 / 123

Регистрация: 08.12.2009

Сообщений: 2,792

Записей в блоге: 2

21.06.2011, 10:56

19

Это не относится к ошибке, но я не увидел смысла в первой строке и в условии второй:

Delphi
1
2
If element_i2 = 0 then el_menu_btn[element_i].Top := 8;
If element_i2 > 0 then el_menu_btn[element_i].Top := 8+(8+60)*element_i2;

На мой взгляд:

Delphi
1
el_menu_btn[element_i].Top := 8+(8+60)*element_i2;



1



Crystallon

1 / 1 / 0

Регистрация: 20.06.2011

Сообщений: 55

21.06.2011, 10:58

 [ТС]

20

Цитата
Сообщение от deathNC
Посмотреть сообщение

Это не относится к ошибке, но я не увидел смысла в первой строке и в условии второй:

Delphi
1
2
If element_i2 = 0 then el_menu_btn[element_i].Top := 8;
If element_i2 > 0 then el_menu_btn[element_i].Top := 8+(8+60)*element_i2;

На мой взгляд:

Delphi
1
el_menu_btn[element_i].Top := 8+(8+60)*element_i2;

Эт сейчас неважно) главное работает xD все равно исправление таких «извращений» не даст заметного прироста в производительности)



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

21.06.2011, 10:58

Помогаю со студенческими работами здесь

На форме располагаются компоненты: редактор Edit; линейка ScrollBar; радионабор с опциями «Цветы», «Деревья», «Рыбы», «Звери»
Доброго времени суток, 2 курс 2 семестр, пришли, препод раздал задачи, сказал качайте дома и…

Тысячные числа исправлять к примеру с «1200» на «1 200», «12000» на «12 000» и т.д
Собственно числа исправлять к примеру с &quot;1200&quot; на &quot;1 200&quot;, &quot;12000&quot; на &quot;12 000&quot;, &quot;120000&quot; на…

В слове Х перед каждой буквой «к», которой предшествует буква «с», вставить букву «н»
Привет всем) вот условие задачи:В слове Х перед каждой буквой &quot;к&quot;, которой предшествует буква &quot;с&quot;,…

Товар стоит «a» руб. «b» коп. За него заплатили «c» руб. «d» коп. Сколько сдачи требуется получить?
Товар стоит a руб. b коп. За него заплатили c руб. d коп. Сколько сдачи требуется получить?…

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

20

Содержание

  1. Исправить ошибочный дескриптор в Windows 10
  2. Ошибка дескриптора в Windows 10
  3. 1] Отключение с помощью клавиши Shift и комбинированной кнопки питания
  4. 2] Загрузитесь в безопасном режиме и удалите последние обновления
  5. 3] Запустите DISM в расширенном запуске с использованием CMD
  6. 4] Выполнить восстановление при запуске/автоматическое восстановление
  7. Простые руководства
  8. Доступные руководства каждому!
  9. Избавляемся от System Error Code 1400
  10. Избавляемся от System Error Code 1400 : 2 комментария
  11. Недопустимый дескриптор окна
  12. Вложенный файл:
  13. Вложенный файл:
  14. Вложенный файл:
  15. Вложенный файл:
  16. Вложенный файл:
  17. Исправить ошибочный дескриптор в windows 10
  18. Удалите букву диска из командной строки
  19. Устранение ошибок реестра
  20. Создайте новую учетную запись локального администратора.
  21. Отключите сетевой диск
  22. 2 ответов
  23. Исправление службы через командную строку
  24. Неверный дескриптор файла
  25. Распространенные сообщения об ошибках в Descriptor.dll
  26. Установлен ли драйвер?
  27. Windows 10
  28. Запрет на отключение порта usb
  29. Неизвестное USB-устройство (сбой запроса дескриптора устройства): проверка драйверов
  30. Ошибка номер 1400
  31. Причины ошибок в файле Descriptor.dll
  32. При подписании документа появляется ошибка «Сертификат не найден» — Сертифікат не знайдено(51) дфс
  33. Проверка настроек ОС и устройства
  34. Занята очередь печати
  35. Ошибка дескриптора в Windows 10
  36. 1] Отключение с помощью клавиши Shift и комбинированной кнопки питания
  37. 2] Загрузитесь в безопасном режиме и удалите последние обновления
  38. 3] Запустите DISM в расширенном запуске с использованием CMD
  39. 4] Выполнить восстановление при запуске/автоматическое восстановление
  40. Анализ энергопотребления периферийных устройств и проблемы статического электричества
  41. Запуск средства устранения неполадок принтера
  42. Как устранить код ошибки 43 USB подключения
  43. Энергосберегающий режим USB
  44. Обновление драйверов USB при ошибке 43
  45. Проблемы с драйверами материнской платы
  46. Снятие статического электричества
  47. Причины ошибки 1400

Исправить ошибочный дескриптор в Windows 10

Ошибка дескриптора в Windows 10

lazy placeholder

1] Отключение с помощью клавиши Shift и комбинированной кнопки питания

Этот ярлык должен заставить Windows 10 загружать новые обновления. Кажется, есть некоторые проблемы с автоматическим обновлением, и этот ярлык помогает исправить.

2] Загрузитесь в безопасном режиме и удалите последние обновления

lazy placeholder

Если вышеуказанное решение не работает, лучше всего удалить обновление. Для этого вам нужно загрузиться в безопасном режиме. Оказавшись внутри, зайдите в Настройки> Обновление и безопасность> Просмотр обновлений и истории> удалить обновления. Выберите последние обновления и выберите, чтобы удалить его.

lazy placeholder

3] Запустите DISM в расширенном запуске с использованием CMD

Загрузите параметры расширенного запуска и выберите «Устранение неполадок»> «Дополнительные параметры»> «Командная строка». Здесь вы можете запустить инструмент DISM. Он будет сканировать ваш компьютер Windows на наличие несоответствий. Они обычно возникают в результате различных сбоев оборудования или проблем с программным обеспечением. Инструмент DISM потенциально исправит это повреждение.

4] Выполнить восстановление при запуске/автоматическое восстановление

Восстановление при загрузке или автоматическое восстановление – это расширенный параметр в Windows. Это может исправить проблемы, которые блокируют Windows от нормальной загрузки. Он будет сканировать системные файлы, параметры реестра, параметры конфигурации и многое другое и автоматически попытаться решить проблему самостоятельно.

Загрузите параметры расширенного запуска и выберите «Устранение неполадок»> «Дополнительные параметры»> «Автоматическое восстановление». Этот процесс может занять некоторое время, и ваша система может даже загрузиться.

Во время восстановления при загрузке вам нужно будет выбрать учетную запись и войти в свою учетную запись Microsoft или локального администратора, чтобы завершить процесс. Во время этого входа в систему вы не должны получить сообщение об ошибке «The Handle is Invalid».

Сообщите нам, помогло ли это исправить ошибку.

Источник

Простые руководства

Доступные руководства каждому!

Избавляемся от System Error Code 1400

Disconnected

Вы когда-нибудь сталкивались с системной ошибкой с кодом 1400 в Windows? Что делать, если вы увидели System Error Code 1400? Вот несколько советов для вас.

Системная ошибка с кодом 1400 – “Недопустимый дескриптор окна“. Этот код ошибки может также отображаться как: “ERROR_INVALID_WINDOW_HANDLE” или со значением 0x578.

Во-первых, вы можете перезагрузить ваш компьютер, иногда ошибка появляется случайно, если же перезагрузка не решила проблему, перейдите к следующим шагам.

Вы должны использовать ваш антивирус для сканирования вашего компьютера, вирус может повредить систему и тем самым вызывать ошибку. При обнаружении любого вируса, поместите его в карантин или удалите. Вы можете использовать CCleaner для очистки системы на данном этапе.

Если с помощью антивируса и CCleaner’а вы не избавились от проблемы, проверьте реестр, узнайте, есть ли какие-либо ошибки, если есть, то восстановите его. Можно использовать Reggenie, которая может восстанавливать реестр быстро и безопасно.

Если проблема остаётся, то лучше обратиться к специалистам для решения проблемы.

Избавляемся от System Error Code 1400 : 2 комментария

А вам не кажется что подобные советы даются всегда и для всех проблем. Это как та таблетка аспирина поломанная на две половинки (одна от головы, другая от кашля – не перепутай) Вот бы действительно дельный совет сказали.

Источник

Недопустимый дескриптор окна

Вложенный файл:

Вложенный файл:

Вложенный файл:

Вложенный файл:

Вложенный файл:

Вложения:

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Что то пошло не так.
1. Либо у Вас проблемы с самой виндовс
2. Либо после создания окна у программы нет возможности получить дескриптор созданного окна или объекта(кнопки и т.п.) Может блокировать какой нить антивирус, либо другое ПО, которое пытается перехватить окна, в том числе и вирусы.
3. Либо что то просто тормозит программу и разработчики не предусмотрели такого случая при использовании потоков(либо что то не успевает выполниться, либо появляется системное сообщение при выводе которого происходит такая фигня).

Во всяком случае проблема в вашей рабочей станции. И как это решить, никто Вам не ответит, все в Ваших руках.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Попробуйте устанавливать Континент TLS Клиент 2.0.1440.0 с отключенным в BIOS Secure Boot (если он был включён).

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

В качестве эксперимента попробуйте выполнить следующее:

В папке C:Program FilesSecurity CodeContinent TLS Client находится точно такой же файл sciter.dll, его необходимо куда-нибудь скопировать в другое место, а в саму папку поместите sciter.dll из архива.

Пересчитайте контрольные суммы, запустив в папке Continent TLS Client GUIIntegrityController.exe, нажав на него правой кнопкой мыши и выбрав «Запуск от имени администратора», а далее нажав кнопку «Пересчитать контрольные суммы».

Вложения:

forum

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Источник

Исправить ошибочный дескриптор в windows 10

Удалите букву диска из командной строки

Команда, которую вы собираетесь запустить, позволяет подключать и отключать буквы дисков в и из виртуального расположения. Отключение буквы диска должно позволить вам установить программу без генерации сообщения об ошибке. Итак, вот что вам нужно сделать:

Теперь мы рекомендуем использовать этот инструмент для вашей ошибки. Кроме того, этот инструмент исправляет распространенные компьютерные ошибки, защищает вас от потери файлов, вредоносных программ, сбоев оборудования и оптимизирует ваш компьютер для максимальной производительности. Вы можете быстро исправить проблемы с вашим ПК и предотвратить появление других программ с этим программным обеспечением:

e91c68212057960a9c11c5896fa546d1

Устранение ошибок реестра

Системный реестр может ошибочно указывать временный диск.

Создайте новую учетную запись локального администратора.

Войдите на компьютер с локальной учетной записью и установите приложения.

Отключите сетевой диск

2 ответов

возможной причиной является несинхронизированный доступ к GUI из потока. Вы сказали, что нить этого не делает, но не видя TRunThread.Execute исходный код, который выглядит как догадка.

на моем ПК разработки тест подключения к интернету был успешным. и так быстро, что я никогда не видел проблемы! После нескольких часов борьбы я, наконец, отследил его до этой темы и воспроизвел его, отсоединив сетевой кабель.

решение было простым: при выходе из формы (напр. в FormDestroy event) убедитесь, что поток определенно не работает перед продолжением.

Исправление службы через командную строку

Вызов Startdocprinter не может быть произведен при нарушении работы диспетчера. В этом случае попробуйте устранить проблему путем изменения списка управления доступом службы.

Откройте строку системного поиска клавишами Win + S, наберите «cmd» и под найденным результатом нажмите на «Запуск от имени администратора».

f5c1d3bd8a0fa9c4a5bd0950a783ef39

В консоли наберите команду:

Теперь выполните следующую команду, чтобы изменить управление доступом:

cacls.exe PRINTERS /E /G администратор:C

69b3a5fe36130dd093c9b3b4093bf247

После успешной обработки команды перезагрузите ПК и проверьте, устранен ли сбой при вызове Startdocprinter.

В языке разметки гипертекста, который применяется для создания статичных веб-страниц, дескрипторы — это не что иное, как тэги. В этой среде они выполняют роль меток, благодаря которым текст, размещённый между ними, отображается определенным способом. Таким образом и формируется дизайн и расположение элементов на странице.

Как правило, специфика языка определяет наличие открывающего дескриптора и закрывающего. Все, что между ними, подвержено изменению.

43ad0dda2e74e6c810c56e044c92c52a

Дескриптор может иметь атрибуты, то есть определённые свойства. Их синтаксис выглядит так: имя атрибута = его значение.

Подчиняясь общей логике, дескрипторы в HTML представляют собой идентификационные метки объектов. С их помощью можно управлять внешним видом, взаимодействовать со страницей и присваивать ей особые значения.

Неверный дескриптор файла

Откройте командную строку на компьютере Windows и выполните эту команду:

Вам необходимо ввести полный путь к файлу/папке.

Например, если у вас есть папка с именем CON на рабочем столе, путь будет выглядеть так:

Команда будет выглядеть так:

Если эта ошибка возникает по другим причинам, используйте следующее:

Это удаляет расширенную функциональность точки повторного анализа.

9f24410d6417c6eb308dc8c4326820ba

Создать папку или файл с зарезервированным именем прямиком из Проводника Windows 10 пользователь даже с правами Администратора не может. Сделать это могут некоторые утилиты, а также такие файлы могут быть переданы с другого компьютера.

Зачастую такие объекты не представляют для пользователя никакой ценности, а только занимаю свободное место на жестком диске. Поэтому юзер пытается их удалить, сталкиваясь с ошибкой Неверного дескриптора.

Причин, по которым в Windows 10 не получается удалить такие файлы, несколько. Главная – объект может удерживаться системным процессом. Также удалить такие файлы невозможно, если они имеют зарезервированные имена, такие, как: CON, PRN, AUX, NUL, COM1 или LPT1.

Распространенные сообщения об ошибках в Descriptor.dll

Наиболее распространенные ошибки descriptor.dll, которые могут возникнуть на компьютере под управлением Windows, перечислены ниже:

Такие сообщения об ошибках DLL могут появляться в процессе установки программы, когда запущена программа, связанная с descriptor.dll (например, Third-Party Application), при запуске или завершении работы Windows, или даже при установке операционной системы Windows

Отслеживание момента появления ошибки descriptor.dll является важной информацией при устранении проблемы

Установлен ли драйвер?

При первичном подключении любого устройства к компьютеру необходима установка драйверов. В случае с принтерами лучше устанавливать не только драйвер, но и программу для работы с устройством. ПО практически всегда поставляется на диске вместе с аппаратом и также содержит инструкцию на нескольких языках.

Изредка в дорогих моделях программное обеспечение предоставляется на USB-флешке. Чтобы проверить, правильно ли установлен драйвер, необходимо зайти в «Диспетчер устройств» операционной системы Windows.

06debfc6bc06048a5041e03e5bde97db

в меню слева выбрать «Диспетчер…»;

проверить перечень на наличие вашего устройства.

Аппарат должен находиться в категории «Принтеры и сканеры». Его название должно соответствовать точно или приблизительно названию вашего устройства (в случае если драйвер универсален, или программно-аппаратная часть не изменялась с прошлой модели).

Например, у вас модель Canon Pixma MP 280, в диспетчере задач может отображаться как Canon Pixma MP 200 или MP 2.

Windows 10

Сбой запроса дескриптора устройства на Windows 10 возникает только в том случае, когда происходит подключение к USB 3.0. Это нормальная ситуация, поэтому и решается она легко — нужно найти подходящие драйвера:

Для ноутбуков есть на сайте производителя (важно учитывать модель устройства).
Для ПК — по материнской плате.

После установки драйверов обычно всё срабатывает. Однако, если нет, и если никакой из описанных методов не сработал, значит, случай уникальный и помочь могут только радикальные способы — сброс настроек BIOS или переустановка ОС, так как дело может быть в том, что она пиратская и ошибки были изначально.

Но к этим способам лучше не прибегать, да и до них вряд ли дойдёт, потому что, какой-то из предложенных ранее, сработает. Ведь в 99% случаев причина возникновения проблем с дескриптором USB лежит в неправильной конфигурации ОС, а в этих случаях эффективна проверка драйверов и настроек. О чём и рассказывается в материале выше.

Запрет на отключение порта usb

Еще одним вариантом, когда флешка не опознается, может быть временное отключение операционкой юсб-порта.

Чтобы это устранить, понадобится открыть «Панель управления» и перейти на вкладку «Электропитание».

В появившемся окне раскройте список пункта «Параметры usb» и выберите «Параметр временного отключения usb-порта».

Установите в нем значение «Запрещено» и нажмите «Ок» для подтверждения изменения.

Кроме этого установите на операционку новые обновления, а при необходимости — последние программы для материнской платы.

Это можно выполнить при помощи программы Driver Easy, которая устанавливает драйвера для любого имеющегося оборудования, в том числе и usb.

a68868af610ad918e58188bf7c0c2e66

Внешний вид программы

Что делать, если usb устройство не опознает Windows 10?

Во — первых следует убедиться в том, что само устройство полностью исправно.

В противном случае причину следует искать в самом компьютере. Для начала проверьте аппаратную часть.

Неизвестное USB-устройство (сбой запроса дескриптора устройства): проверка драйверов

Если же с энергопотреблением все в порядке, возможно, проблема состоит в драйверах контроллеров.

Проверить их состояние можно в том же «Диспетчере устройств». Если устройство не определяется (происходит сбой дескриптора), драйверы придется переустановить. В списке USB-контроллеров следует найти все записи, относящиеся к Generic USB Hub, корневым концентраторам и составным устройствам.

bc4ff44246f634ebf48c8c22849e0c80

Для каждого из них нужно выполнить операцию обновления драйверов, вызываемую из меню правого клика, а при установке либо задать поиск на локальном компьютере, либо выбрать драйвер из списка установленных. Как правило, в списке будет отображен только один совместимый драйвер.

После переустановки драйверов для всех устройств исчезновение проблемы имеет все шансы на успех. Проблема совместимости с Windows 10 для устройств USB 3.0 решается не установкой стандартного драйвера из собственной базы данных системы, а загруженного с официального сайта производителя компьютерной техники. В частности, эта проблема касается большинства ноутбуков.

Ошибка номер 1400

Данная проблема часто встречается в семействе операционных систем Windows. При её появлении вместе с ней может быть и краткое описание — недопустимый дескриптор окна. А может встречаться и такая формулировка — «Error_invalid_window_handle» или 0х578.

Как бороться и что значит неверный дескриптор? В зависимости от контекста объекта, нужно принимать разные меры.

f7a4d0dbb289d7771774624d3869a0c6

В любом случае стоит сразу же пройтись по стандартным мерам, принимаемым ко всем проблемам с системой:

Если базовые шаги не помогли, то, возможно, стоит удалить и снова установить приложение, которое вызывает сбой.

Ещё один надёжный способ быстро восстановить работоспособность системы — сделать её откат с помощью стандартных инструментов. После использования «Восстановления системы», она вернётся к последней действующей резервной копии, при условии что она была ранее создана.

Причины ошибок в файле Descriptor.dll

Большинство ошибок descriptor.dll связано с отсутствием или повреждениями файлов descriptor.dll. Тот факт, что descriptor.dll – внешний файл, открывает возможность для всяческих нежелательных последствий.

Непредвиденные завершения работы вашего компьютера или заражение вирусом может повредить descriptor.dll, что приведет к ошибкам dll. Когда файл descriptor.dll повреждается, он не может быть нормально загружен и выведет сообщение об ошибке.

В других случаях ошибки файла descriptor.dll могут быть связаны с проблемами в реестре Windows. Нерабочие ссылки DLL файлов могут помешать зарегистрировать файл dll должным образом и вызвать ошибку descriptor.dll. Эти нерабочие ключи реестра могут появиться в результате отсутствия файла DLL, перемещения файла DLL или ввиду наличия остаточной ссылки DLL файла в реестре Windows после неудачной установки или удаления программы.

Более конкретно, данные ошибки descriptor.dll могут быть вызваны следующими причинами:

При подписании документа появляется ошибка «Сертификат не найден» — Сертифікат не знайдено(51) дфс

Чтобы проверить наличие сертификатов, то необходимо использовать раздел «Поиск сертификатов» на официальном сайте ресурса АЦСК, к которому относится Ваш ключ (детально /kak-nayti-i-zagruzit-sobstvennyy-sertifikat-lichnogo-klyucha-ecp)

В данном разделе ввести в одно из полей «Код ЕГРПОУ» или «Регистрационный номер учетной карточки плательщика налогов» соответствующий номер и найти соответствующий усиленный сертификат открытого ключа.

Обязательно обращайте внимание на дату и срок действия сертификата!

Если дата ключа соответствует дате сертификата, то его нужно сохранить на Ваш локальный диск, который выбран для сохранения сертификатов в качестве файлового хранилища.

После этих настроек повторите попытку загрузки ключа электронной цифровой подписи еще раз.

Нужно проверить наличие действующего сертификата вашего ключа следующим образом:

Зайти в Сонате в Меню-Криптобиблиотека-настройки…»

Перейти на вкладку «Личный ключ», затем кликнуть по кнопке «Проверить»

Далее, вставьте флешку или другой носитель в компьютер

Далее введите пароль и кликните по кнопке «Считать».

Скачайте ваши сертификаты с сайта АЦСК

Загруженные сертификаты нужно импортировать:

Зайти в Сонате в Меню-Криптобиблиотека-посмотреть сертификаты»

Снизу нажать «Импортировать», выбрать все загруженные сертификаты и нажать кнопку «Открыть»

Если данная проверка была выполнена успешно, то это может быть ошибка в работе самой сонаты. Если при проверке была ошибка — то нужного сертификата нет.

Проверка настроек ОС и устройства

Если вы столкнулись с тем, что устройство не выводит на экран никаких сообщений, и при отправке файла на печать ничего не происходит, то прежде чем обращаться в сервисный центр с вопросом: «что делать принтер перестал печатать, проверьте настройки подключения аппарата, а также операционой системы.

Чтобы это сделать первым делом следует проверить, правильно ли подключено устройство к компьютеру, и видит ли его операционная система.

оно должно быть в списке и соответствовать наименованию вашего аппарата;

напротив него не должно быть обозначений ошибочного подключения, конфликта или отключения (желтый восклицательный знак или красный крест).

Теперь нужно проверить, правильность настроек самого аппарата.

В случае если печать не начинается, проблем может быть несколько:

неправильно указан порт подключения;

сменился адрес или имя компьютера, к которому подключен сетевой принтер;

не работает устройство, которое является связующим для подключения по сети (роутер, маршрутизатор, компьютер);

неверно выбран принтер, как устройство по умолчанию;

в настройках аппарата стоит запрет на вывод определенного типа данных.

Для проверки этих данных необходимо обратиться к «Панели управления» и выбрать пункт «Устройства и принтеры». Тут можно изменить устройство для печати, выбранное по умолчанию (правой кнопкой мыши вызвав меню и активировав соответствующую галочку). В свойствах аппарата – проверить правильность настройки.

917adc593164b56843dc40ea44245415

Если подключение к сетевому аппарату невозможно, лучше обратиться за помощью к пользователю удаленного компьютера или сетевому администратору.

Занята очередь печати

Если вы уверены, что принтер работает но не печатает, необходимо проверить, не занята ли очередь печати. Большинство современных устройств с полностью установленным программным обеспечением сами выводят на экран подобную ошибку. Однако это не всегда происходит.

В таком случае нужно самому проверять очередь на печать. Сделать это можно, вызвав программу драйвера из трея (значок возле часов). Однако этот способ не всегда подходит для тех, кто пользуется аппаратом по сети.

a4e09691b5c067fbff573eab02d37395

Наиболее часто с проблемой очереди печати сталкиваются пользователи обширных сетей при работе с общим принтером. В таком случае одно задание может состоять из множества частей. Например, если оно очень большое, программа могла сама поделить его для того, чтобы не перегружать внутреннюю память устройства.

Кроме того, корпоративная практика показывает, что очень часто встречаются случаи, когда одно задание не завершилось полностью из-за ошибок (закончилась или замялась бумага, перегрелся принтер), и было послано еще одно и еще.

c25f10eef278d5aed9acfc0826dfb3b0

В зависимости от модели аппарат может не обращать внимания на недоработанные задания и продолжать работать, пока его память полностью не забьется подобными фрагментами. Или же сразу не давать продолжить работу.

Выхода может быть два:

некоторые аппараты требуют физического воздействия, то есть квитирования ошибок и удаления очереди печати кнопками непосредственно на нём.

Ошибка дескриптора в Windows 10

994227f4be309b43bf82eb3ae06a638f

1] Отключение с помощью клавиши Shift и комбинированной кнопки питания

Этот ярлык должен заставить Windows 10 загружать новые обновления. Кажется, есть некоторые проблемы с автоматическим обновлением, и этот ярлык помогает исправить.

2] Загрузитесь в безопасном режиме и удалите последние обновления

506705fd38508c3e2a663b849e957d18

Если вышеуказанное решение не работает, лучше всего удалить обновление. Для этого вам нужно загрузиться в безопасном режиме. Оказавшись внутри, зайдите в Настройки> Обновление и безопасность> Просмотр обновлений и истории> удалить обновления. Выберите последние обновления и выберите, чтобы удалить его.

9615d624f7b5b84d9427391c78f4d9b6

3] Запустите DISM в расширенном запуске с использованием CMD

Загрузите параметры расширенного запуска и выберите «Устранение неполадок»> «Дополнительные параметры»> «Командная строка». Здесь вы можете запустить инструмент DISM. Он будет сканировать ваш компьютер Windows на наличие несоответствий. Они обычно возникают в результате различных сбоев оборудования или проблем с программным обеспечением. Инструмент DISM потенциально исправит это повреждение.

4] Выполнить восстановление при запуске/автоматическое восстановление

Восстановление при загрузке или автоматическое восстановление — это расширенный параметр в Windows. Это может исправить проблемы, которые блокируют Windows от нормальной загрузки. Он будет сканировать системные файлы, параметры реестра, параметры конфигурации и многое другое и автоматически попытаться решить проблему самостоятельно.

Загрузите параметры расширенного запуска и выберите «Устранение неполадок»> «Дополнительные параметры»> «Автоматическое восстановление». Этот процесс может занять некоторое время, и ваша система может даже загрузиться.

Во время восстановления при загрузке вам нужно будет выбрать учетную запись и войти в свою учетную запись Microsoft или локального администратора, чтобы завершить процесс. Во время этого входа в систему вы не должны получить сообщение об ошибке «The Handle is Invalid».

Сообщите нам, помогло ли это исправить ошибку.

Анализ энергопотребления периферийных устройств и проблемы статического электричества

Одной из причин того, что система выдает сообщение о том, что произошел сбой запроса дескриптора USB-устройства, может быть и потребление электроэнергии, показатель которого превышает номинал.

Чтобы проверить эту информацию для начала нужно зайти в «Диспетчер устройств», который можно вызвать либо через «Панель управления», либо командой devmgmt.msc в консоли «Выполнить» (Win + R), и найти там установленные USB-контроллеры, а в самом разделе выбрать пункт, соответствующий корневому USB-концентратору.

77dc157f63c71139f8426b092444235b

Далее правым кликом вызывается контекстное меню и выбирается строка свойств. На вкладке питания следует убедиться, что потребляемая мощность не превышает доступную.

Если превышение имеется, следует полностью отключить все периферийные устройства вместе с компьютером и выдернуть шнур из розетки, после чего на несколько секунд зажать кнопку питания, чтобы с материнской платы исчезли остаточные токи. После включения и повторной загрузки операционной системы отключенные устройства следует подключать поочередно, чтобы найти источник сбоя.

Запуск средства устранения неполадок принтера

Прежде чем перейти к более сложным способам решения, рекомендуется начать поиск неисправностей запуском утилиты, способной автоматически решить большинство проблем.

Воспользуйтесь инструментом устранения неполадок принтера, чтобы проанализировать текущую ситуацию с драйверами и посмотреть, эффективность его предустановленных способов восстановления. Инструмент ищет несоответствия, которые приводят к ошибкам печатающего устройства. Если ему удастся найти способ восстановления, он порекомендует исправление, которое разрешит ошибку.

Откройте вкладку Устранения неполадок командой ms-settings:troubleshoot из окна «Выполнить» (Win + R).

212918319a74680aaa12de45cf379544

В правой части окна прокрутите вниз до раздела «Запустить диагностику и устранить неисправность». Затем выберите принтер и кликните на кнопку «Запустить средство устранения неполадок».

dca657e9650aa0fc3f37b724ffac686e

Дождитесь завершения начального сканирования, а затем нажмите «Применить это исправление», если средство определило вариант восстановления.

После успешного применения исправления перезагрузите компьютер и проверьте, возникает ли ошибка, повторив то действие, при котором она возникала. Если продолжаете сталкиваться с ошибкой, из-за которой не произведен вызов функции Startdocprinter или инструмент не нашел никаких проблем с конфигурацией принтера, перейдите к следующему методу.

Как устранить код ошибки 43 USB подключения

В тех ситуациях, когда ошибка 43 возникает из-за программного сбоя, у этого может быть несколько причин.

Энергосберегающий режим USB

Сбой запроса дескриптора устройства может быть временным или постоянным. Когда некоторое время компьютер через USB стабильно взаимодействует с устройством, а после отключается из-за ошибки 43, вероятнее всего ситуация в обесточивании разъемов. Чтобы исправить ситуацию проделайте следующее:

Когда данные действия будут выполнены для всех указанных пунктов, попробуйте вновь подключить внешнее USB устройство. Если ошибка 43 сохраняется, перейдите к следующему пункту инструкции.

Обновление драйверов USB при ошибке 43

Ошибка 43, связанная с проблемами дескриптора устройства, может возникать из-за неисправности драйверов. В таком случае лучшим вариантом будет их переустановить. Процедуру переустановки драйверов USB, описанную ниже, следует провести для всех корневых USB-концентраторов, составных USB устройств и Generic USB Hub.

Как переустановить драйвера USB для устранения ошибки 43:

Указанные шаги следует проделать для всех обозначенных выше USB контроллеров.

Проблемы с драйверами материнской платы

0ef7592b69f4eb807aa2a87f15dff71f
Возникать ошибка 43 может по вине неправильно установленных драйверов материнской платы или при их полном отсутствии. Чаще всего автоматической установки драйверов операционной системой Windows достаточно, чтобы USB контроллеры работали без сбоя, но с редкими материнскими платами могут возникать ошибки.

Чтобы обновить драйвера материнской платы, следует загрузить актуальную их версию с официального сайта разработчиков платы или чипсета. Найдите требуемые драйвера (Intel Chipset Driver, ACPI Driver или другие) для своей модели оборудования, после чего произведите их установку.

Важно: Если на сайте производителя отсутствует версия драйверов для Windows 10, можно установить вариацию для Windows 8 в режиме совместимости, но обращайте внимание на разрядность ОС

Снятие статического электричества

b969e69fb063aa32b82fdd20a6ce7c88
Ошибка 43 при подключении USB устройств также может являться следствием проблем с питанием портов. Чтобы устранить возможные перенапряжения, статические сгустки или недостаток питания на портах, проделайте следующее:

После выполнения указанных выше действий, блок питания сбрасывает из памяти информацию о том, что некоторые портам требуется больше энергии, чем другим. Вместе с тем удаляется статическое электричество с портов компьютера, если оно имеет место быть.

(445 голос., средний: 4,51 из 5)

Причины ошибки 1400

Ошибки типа Ошибки во время выполнения, такие как «Ошибка 1400», могут быть вызваны целым рядом факторов, поэтому важно устранить каждую из возможных причин, чтобы предотвратить повторение ошибки в будущем

Источник

Обновлено: 05.06.2023

Почему ошибка 1400 Неверный дескриптор окна?

Почему при создании окна возвращается 1400 недействительных дескрипторов? Не так ли? В функции создания окна нет дескриптора окна, хорошо? Как это может быть неверный дескриптор? Я долго искал в поисковике, но до сих пор не могу решить эту проблему?
Почему CreateWindowExW() вернуть 1400?
Код в строке 44.

Решение

Вы используете WindowHandle в процедуре окна, прежде чем он был установлен на возвращаемое значение CreateWindowEx , Часть этого CreateWindowEx вызов вызывает оконную процедуру с WM_NCCREATE а также WM_CREATE , Ваша оконная процедура вызывает DefWindowProc с нулевой ручкой в ​​этой точке.

Простое решение здесь заключается в использовании _windowHandle параметр вместо вашего WindowHandle Глобальный.

Другие решения

Вы не проверяли, действительно ли произошла ошибка. Вам нужно проверить дескриптор, который вы получаете от CreateWindowEx, прежде чем вызывать GetLastError. В противном случае он вернет некоторую предыдущую, не связанную ошибку или какое-либо случайное значение.

Вызывайте GetLastError только после неудачного CreateWindow (то есть, если CreateWindow возвращает NULL).

последнее значение ошибки не указывается после подавляющего большинства успешных вызовов Windows API, необходимо проверить возвращаемое значение перед вызовом GetLastError.

Недопустимый дескриптор окна error 1400

Проблема в следующем:
В отдельном потоке запускается обработка текстовых файлов на предмет поиска совпадений по строке. «ОНО» само работает прекрасно, но тут я вздумал сделать кнопочку «остановки», просто напросто устанавливая указатель текущего читаемого файла на конец списка. И вот тогда произошел крах. Программа зависает, визуальные компоненты типа мемо не отрисовываются, а потом вылезает ошибка Error 1400 : Недопустимый дескриптор окна.
не могу понять почему, и что не так.

Помощь в написании контрольных, курсовых и дипломных работ здесь.

94731 / 64177 / 26122
Ответы с готовыми решениями:

‘System Error. Code: 1400. Недопустимый дескриптор окна’
Пишу многопоточную программу, а при ее закрытии после работы потоков выдает эту ошибку, из-за чего.

EOSError 1400 «Недопустимый дескриптор окна»
Доброго времени суток. После того как перенес некоторый код в поток при завершении программы стала.

Недопустимый дескриптор окна =)
Все пашет вот только. Обьясняю))) В общем Основное Приложение вызывает SendPPMsg из DLL и все.

Ранши, попробуй в 34 строке использовать критическую секцию.

Добавлено через 4 минуты
Ранши, и, кстати, проверь, когда у тебя в 19 строке индекс установится на последний элемент (на 9 например из 10), условие в строке 16 не выполнится, и элемент будет проигнорирован.

Ранши, попробуй в 34 строке использовать критическую секцию.
Ранши, и, кстати, проверь, когда у тебя в 19 строке индекс установится на последний элемент (на 9 например из 10), условие в строке 16 не выполнится, и элемент будет проигнорирован.
Почему? нумерация начинается с нуля, и 10-й элемент по факту имеет номер 9, потому что первый был с номером 0. Но строк так то 10. Если я напишу
то будет выход за пределы массива строк.
Почему? нумерация начинается с нуля, и 10-й элемент по факту имеет номер 9, потому что первый был с номером 0. Но строк так то 10.
Когда в 19 строке FileNum станет равным 9, у тебя в
будет if 9 < 9 и условие не выполнится.
И у тебя в 34 строке не FList, а List, это правильно?
2270 / 1384 / 481
И у тебя в 34 строке не FList, а List, это правильно?

Flist объект List называется в переменной внутри потока.

будет if 9 < 9 и условие не выполнится.
Сделал, но все та же ошибка про неверный дескриптор(
2270 / 1384 / 481
Покажите финальный код, а то уже столько изменений насоветовали
Покажите финальный код, а то уже столько изменений насоветовали

Разобрался)
Оказалось, все вообще из за другого было) Из за того, что мемо, в которое я «сливаю» потом все что есть в листе, было на другой вкладке пэйдж контрола. Невидимое. Стоило перенести на «рабочую» вкладку и ошибка сразу пропала)

Как мне вот тут.

указать общего родителя всех (разных) классов потоков?
Усть класс LogReader от него наследуются 2 класса : FileReaderThread и ListReaderThread. Я хотел бы, что бы результат работы обоих классов можно было как-то получать в качестве аргумента в одной переменной. Как в джаве. Там можно просто указать класс родителя и аргумент без проблем проходит. Тут же — нет. Если я указываю в качестве отправителя класс LogReader, то ничего не происходит.
Не подскажете, как это сделать, не штудируя от корки до корки «Потоки в Делфи для чайников» ?)
Понимаю, нагло, но все же)

Покажет либо ошибку доступа к памяти, либо выход за границы диапазона.
И в 16-й строке должно быть либо <=, либо FList.Count
Попробуйте сами. Последний элемент у вас обработан не будет.

Добавлено через 2 минуты
Ранши, Попробуйте для одного элемента. Ваше условие не выполнится и он обработан не будет.

87844 / 49110 / 22898

Помощь в написании контрольных, курсовых и дипломных работ здесь.

System Error. Code 1400. Недопустимый дескриптор окна
Вобщем такая проблема есть БД акссес и программа все рабоет но при закрытии программы выдает ошибку.

Отладка dll [System Error 1400]
Пару дней назад я написал плагин для Google Chrome. Delphi+NPApi. Плагин выводит форму Hellow.

EOSError 1400 “Недопустимый дескриптор окна”
Программа (назовём её My1.exe ) периодически обращается из потока к COM-порту. На компьютере есть.

Нужно получить дескриптор окна имея дескриптор контрола
Нужно получить дескриптор окна имея дескриптор контрола, подскажите как

‘System Error. Code: 1400. Недопустимый дескриптор окна’

Помощь в написании контрольных, курсовых и дипломных работ здесь.

94731 / 64177 / 26122
Ответы с готовыми решениями:

EOSError 1400 «Недопустимый дескриптор окна»
Доброго времени суток. После того как перенес некоторый код в поток при завершении программы стала.

Недопустимый дескриптор окна =)
Все пашет вот только. Обьясняю))) В общем Основное Приложение вызывает SendPPMsg из DLL и все.

Ошибка Exception EOSError in module . System error. Code: 1400. Invalid window handle.
Доброе время суток! Я использовал поток в приложении CreateThread().. Примерно такая струкура.

5009 / 3907 / 1291
Записей в блоге: 18
приведенный код вообще ни при чем
ошибка возникает скорее всего, когда завершающийся поток пытается обратиться к уже разрушенным объектам
Заблокирован

Прежде чем программировать потоки, прочитайте справку по ним, иначе погрязнете в ошибках.
Вот небольшой ман по потокам.

87844 / 49110 / 22898

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Отладка dll [System Error 1400]
Пару дней назад я написал плагин для Google Chrome. Delphi+NPApi. Плагин выводит форму Hellow.

System Error. Code 1400. Недопустимый дескриптор окна
Вобщем такая проблема есть БД акссес и программа все рабоет но при закрытии программы выдает ошибку.

EOSError 1400 “Недопустимый дескриптор окна”
Программа (назовём её My1.exe ) периодически обращается из потока к COM-порту. На компьютере есть.

Code 1400 недопустимый дескриптор окна

Почему при создании окна возвращается 1400 недействительных дескрипторов? Не так ли? В функции создания окна нет дескриптора окна, хорошо? Как это может быть неверный дескриптор? Я долго искал в поисковике, но до сих пор не могу решить эту проблему?
Почему CreateWindowExW() вернуть 1400?
Код в строке 44.

Решение

Вы используете WindowHandle в процедуре окна, прежде чем он был установлен на возвращаемое значение CreateWindowEx , Часть этого CreateWindowEx вызов вызывает оконную процедуру с WM_NCCREATE а также WM_CREATE , Ваша оконная процедура вызывает DefWindowProc с нулевой ручкой в ​​этой точке.

Простое решение здесь заключается в использовании _windowHandle параметр вместо вашего WindowHandle Глобальный.

Другие решения

Вы не проверяли, действительно ли произошла ошибка. Вам нужно проверить дескриптор, который вы получаете от CreateWindowEx, прежде чем вызывать GetLastError. В противном случае он вернет некоторую предыдущую, не связанную ошибку или какое-либо случайное значение.

Вызывайте GetLastError только после неудачного CreateWindow (то есть, если CreateWindow возвращает NULL).

последнее значение ошибки не указывается после подавляющего большинства успешных вызовов Windows API, необходимо проверить возвращаемое значение перед вызовом GetLastError.

Номер ошибки: Ошибка 1400
Название ошибки: IE Error Code 1400
Описание ошибки: Ошибка 1400: Возникла ошибка в приложении Internet Explorer. Приложение будет закрыто. Приносим извинения за неудобства.
Разработчик: Microsoft Corporation
Программное обеспечение: Internet Explorer
Относится к: Windows XP, Vista, 7, 8

Совместима с Windows 2000, XP, Vista, 7, 8 и 10

Признаки ошибки 1400

Причины ошибки 1400

  • Поврежденная загрузка или неполная установка программного обеспечения Internet Explorer.
  • Повреждение реестра Internet Explorer из-за недавнего изменения программного обеспечения (установка или удаление), связанного с Internet Explorer.
  • Вирус или вредоносное ПО, которые повредили файл Windows или связанные с Internet Explorer программные файлы.
  • Другая программа злонамеренно или по ошибке удалила файлы, связанные с Internet Explorer.

Ошибки типа Ошибки во время выполнения, такие как «Ошибка 1400», могут быть вызваны целым рядом факторов, поэтому важно устранить каждую из возможных причин, чтобы предотвратить повторение ошибки в будущем.

Code 1400 недопустимый дескриптор окна

Ошибки во время выполнения в базе знаний

star rating here

Ниже описана последовательность действий по устранению ошибок, призванная решить проблемы Ошибка 1400. Данная последовательность приведена в порядке от простого к сложному и от менее затратного по времени к более затратному, поэтому мы настоятельно рекомендуем следовать данной инструкции по порядку, чтобы избежать ненужных затрат времени и усилий.

Пожалуйста, учтите: Нажмите на изображение [ ] , чтобы развернуть инструкции по устранению проблем по каждому из шагов ниже. Вы также можете использовать изображение [ ], чтобы скрывать инструкции по мере их выполнения.

Code 1400 недопустимый дескриптор окна

Шаг 1: Восстановить записи реестра, связанные с ошибкой 1400

Редактирование реестра Windows вручную с целью удаления содержащих ошибки ключей Ошибка 1400 не рекомендуется, если вы не являетесь специалистом по обслуживанию ПК. Ошибки, допущенные при редактировании реестра, могут привести к неработоспособности вашего ПК и нанести непоправимый ущерб вашей операционной системе. На самом деле, даже одна запятая, поставленная не в том месте, может воспрепятствовать загрузке компьютера!

Предупреждение: Если вы не являетесь опытным пользователем ПК, мы НЕ рекомендуем редактирование реестра Windows вручную. Некорректное использование Редактора реестра может привести к серьезным проблемам и потребовать переустановки Windows. Мы не гарантируем, что неполадки, являющиеся результатом неправильного использования Редактора реестра, могут быть устранены. Вы пользуетесь Редактором реестра на свой страх и риск.

Перед тем, как вручную восстанавливать реестр Windows, необходимо создать резервную копию, экспортировав часть реестра, связанную с Ошибка 1400 (например, Internet Explorer):

  1. Нажмите на кнопку Начать.
  2. Введите «command» в строке поиска. ПОКА НЕ НАЖИМАЙТЕENTER!
  3. Удерживая клавиши CTRL-Shift на клавиатуре, нажмите ENTER.
  4. Будет выведено диалоговое окно для доступа.
  5. Нажмите Да.
  6. Черный ящик открывается мигающим курсором.
  7. Введите «regedit» и нажмите ENTER.
  8. В Редакторе реестра выберите ключ, связанный с Ошибка 1400 (например, Internet Explorer), для которого требуется создать резервную копию.
  9. В меню Файл выберите Экспорт.
  10. В списке Сохранить в выберите папку, в которую вы хотите сохранить резервную копию ключа Internet Explorer.
  11. В поле Имя файла введите название файла резервной копии, например «Internet Explorer резервная копия».
  12. Убедитесь, что в поле Диапазон экспорта выбрано значение Выбранная ветвь.
  13. Нажмите Сохранить.
  14. Файл будет сохранен с расширением .reg.
  15. Теперь у вас есть резервная копия записи реестра, связанной с Internet Explorer.

Следующие шаги при ручном редактировании реестра не будут описаны в данной статье, так как с большой вероятностью могут привести к повреждению вашей системы. Если вы хотите получить больше информации о редактировании реестра вручную, пожалуйста, ознакомьтесь со ссылками ниже.

Code 1400 недопустимый дескриптор окна

Шаг 2: Проведите полное сканирование вашего компьютера на вредоносное ПО

Есть вероятность, что ошибка 1400 может быть связана с заражением вашего компьютера вредоносным ПО. Эти вредоносные злоумышленники могут повредить или даже удалить файлы, связанные с Ошибки во время выполнения. Кроме того, существует возможность, что ошибка 1400 связана с компонентом самой вредоносной программы.

Совет: Если у вас еще не установлены средства для защиты от вредоносного ПО, мы настоятельно рекомендуем использовать Emsisoft Anti-Malware (скачать). В отличие от других защитных программ, данная программа предлагает гарантию удаления вредоносного ПО.

Code 1400 недопустимый дескриптор окна

Шаг 3: Очистить систему от мусора (временных файлов и папок) с помощью очистки диска (cleanmgr)

Со временем ваш компьютер накапливает ненужные файлы в связи с обычным интернет-серфингом и повседневным использованием компьютера. Если такие ненужные файлы иногда не удалять, они могут привести к снижению быстродействия Internet Explorer или к ошибке 1400, возможно вследствие конфликтов файлов или перегрузки жесткого диска. Удаление таких временных файлов при помощи утилиты Очистка диска может не только устранить ошибку 1400, но и существенно повысить быстродействие вашего компьютера.

Совет: Хотя утилита Очистки диска является прекрасным встроенным инструментом, она удаляет не все временные файлы с вашего компьютера. Другие часто используемые программы, такие как Microsoft Office, Firefox, Chrome, Live Messenger, а также сотни других программ не поддаются очистке при помощи программы Очистка диска (включая некоторые программы Microsoft Corporation).

Из-за недостатков утилиты Windows Очистка диска (cleanmgr) мы настоятельно рекомендуем использовать специализированное программное обеспечение очистки жесткого диска / защиты конфиденциальности, например WinSweeper [Загрузить] (разработано Microsoft Gold Partner), для очистки всего компьютера. Запуск WinSweeper [Загрузить] раз в день (при помощи автоматического сканирования) гарантирует, что ваш компьютер всегда будет чист, будет работает быстро и без ошибок %%error_name%%, связанных с временными файлами.

Как запустить Очистку диска (cleanmgr) (Windows XP, Vista, 7, 8 и 10):

  1. Нажмите на кнопку Начать.
  2. Введите «command» в строке поиска. ПОКА НЕ НАЖИМАЙТЕENTER!
  3. Удерживая клавиши CTRL-Shift на клавиатуре, нажмите ENTER.
  4. Будет выведено диалоговое окно для доступа.
  5. Нажмите Да.
  6. Черный ящик открывается мигающим курсором.
  7. Введите «cleanmgr» и нажмите ENTER.
  8. Программа Очистка диска приступит к подсчету занятого места на диске, которое вы можете освободить.
  9. Будет открыто диалоговое окно Очистка диска, содержащее флажки, которые вы можете выбрать. В большинстве случаев категория «Временные файлы» занимает большую часть дискового пространства.
  10. Установите флажки напротив категорий, которые вы хотите использовать для очистки диска, и нажмите OK.
Шаг 4: Обновите драйверы устройств на вашем компьютере

Ошибки 1400 могут быть связаны с повреждением или устареванием драйверов устройств. Драйверы с легкостью могут работать сегодня и перестать работать завтра по целому ряду причин. Хорошая новость состоит в том, что чаще всего вы можете обновить драйверы устройства, чтобы устранить проблему с Ошибка 1400.

В связи с временными затратами и общей сложностью обновления драйверов мы настоятельно рекомендуем использовать утилиту обновления драйверов, например DriverDoc (разработана Microsoft Gold Partner), для автоматизации этого процесса.

Пожалуйста, учтите: Ваш файл Ошибка 1400 может и не быть связан с проблемами в драйверах устройств, но всегда полезно убедиться, что на вашем компьютере установлены новейшие версии драйверов оборудования, чтобы максимизировать производительность вашего ПК.

Шаг 5: Используйте Восстановление системы Windows, чтобы «Отменить» последние изменения в системе

Пожалуйста, учтите: использование восстановления системы не повлияет на ваши документы, изображения или другие данные.

Чтобы использовать Восстановление системы (Windows XP, Vista, 7, 8 и 10):

  1. Нажмите на кнопку Начать.
  2. В строке поиска введите «Восстановление системы» и нажмите ENTER.
  3. В окне результатов нажмите Восстановление системы.
  4. Введите пароль администратора (при появлении запроса).
  5. Следуйте инструкциям Мастера для выбора точки восстановления.
  6. Восстановить ваш компьютер.
Шаг 6: Удалите и установите заново программу Internet Explorer, связанную с Ошибка 1400

Инструкции для Windows 7 и Windows Vista:

  1. Откройте «Программы и компоненты», нажав на кнопку Пуск.
  2. Нажмите Панель управления в меню справа.
  3. Нажмите Программы.
  4. Нажмите Программы и компоненты.
  5. Найдите Internet Explorer в столбце Имя.
  6. Нажмите на запись Internet Explorer.
  7. Нажмите на кнопку Удалить в верхней ленте меню.
  8. Следуйте инструкциям на экране для завершения удаления Internet Explorer.

Инструкции для Windows XP:

  1. Откройте «Программы и компоненты», нажав на кнопку Пуск.
  2. Нажмите Панель управления.
  3. Нажмите Установка и удаление программ.
  4. Найдите Internet Explorer в списке Установленные программы.
  5. Нажмите на запись Internet Explorer.
  6. Нажмите на кнопку Удалить справа.
  7. Следуйте инструкциям на экране для завершения удаления Internet Explorer.

Инструкции для Windows 8:

  1. Установите указатель мыши в левой нижней части экрана для показа изображения меню Пуск.
  2. Щелкните правой кнопкой мыши для вызова Контекстного меню Пуск.
  3. Нажмите Программы и компоненты.
  4. Найдите Internet Explorer в столбце Имя.
  5. Нажмите на запись Internet Explorer.
  6. Нажмите Удалить/изменить в верхней ленте меню.
  7. Следуйте инструкциям на экране для завершения удаления Internet Explorer.

После того, как вы успешно удалили программу, связанную с Ошибка 1400 (например, Internet Explorer), заново установите данную программу, следуя инструкции Microsoft Corporation.

Совет: Если вы абсолютно уверены, что ошибка 1400 связана с определенной программой Microsoft Corporation, удаление и повторная установка программы, связанной с Ошибка 1400 с большой вероятностью решит вашу проблему.

Шаг 7: Запустите проверку системных файлов Windows («sfc /scannow»)

Проверка системных файлов представляет собой удобный инструмент, включаемый в состав Windows, который позволяет просканировать и восстановить поврежденные системные файлы Windows (включая те, которые имеют отношение к Ошибка 1400).

Чтобы запустить проверку системных файлов (Windows XP, Vista, 7, 8 и 10):

Шаг 8: Установите все доступные обновления Windows

Microsoft постоянно обновляет и улучшает системные файлы Windows, связанные с Ошибка 1400. Иногда для решения проблемы Ошибки во время выполнения нужно просто напросто обновить Windows при помощи последнего пакета обновлений или другого патча, которые Microsoft выпускает на постоянной основе.

Чтобы проверить наличие обновлений Windows (Windows XP, Vista, 7, 8 и 10):

  1. Нажмите на кнопку Начать.
  2. Введите «update» в строке поиска и нажмите ENTER.
  3. Будет открыто диалоговое окно Обновление Windows.
  4. Если имеются доступные обновления, нажмите на кнопку Установить обновления.
Шаг 9: Произведите чистую установку Windows

Предупреждение: Мы должны подчеркнуть, что переустановка Windows займет очень много времени и является слишком сложной задачей, чтобы решить проблемы Ошибка 1400. Во избежание потери данных вы должны быть уверены, что вы создали резервные копии всех важных документов, изображений, программ установки программного обеспечения и других персональных данных перед началом процесса. Если вы сейчас е создаете резервные копии данных, вам стоит немедленно заняться этим (скачать рекомендованное решение для резервного копирования), чтобы защитить себя от безвозвратной потери данных.

Пожалуйста, учтите: Если проблема 1400 не устранена после чистой установки Windows, это означает, что проблема Ошибки во время выполнения ОБЯЗАТЕЛЬНО связана с аппаратным обеспечением. В таком случае, вам, вероятно, придется заменить соответствующее оборудование, вызывающее ошибку 1400.

Информация об операционной системе

  • Windows 10
  • Windows 8
  • Windows 7
  • Windows Vista
  • Windows XP
  • Windows ME
  • Windows 2000

Проблема с 1400 все еще не устранена?

Обращайтесь к нам в любое время в социальных сетях для получения дополнительной помощи:

Code 1400 недопустимый дескриптор окна

Code 1400 недопустимый дескриптор окна

Об авторе: Джей Гитер (Jay Geater) является президентом и генеральным директором корпорации Solvusoft — глобальной компании, занимающейся программным обеспечением и уделяющей основное внимание новаторским сервисным программам. Он всю жизнь страстно увлекался компьютерами и любит все, связанное с компьютерами, программным обеспечением и новыми технологиями.

у меня проблема. У меня есть приложение VCL, использующее поток. Этот поток выполняет некоторые вычисления и вызывает метод MainForm через Synchronize(). Все работает отлично, у меня есть кнопка «Пуск», которая создает и запускает поток и кнопку» Стоп», которая останавливает и освобождает его. Никаких ошибок, ничего.

Я надеюсь, что вопрос несколько ясен, и я надеюсь, что он разрешим, потому что просто игнорирование ошибки кажется немного нечистым.

ответ

эта ошибка произошла со мной, когда метод Execute нить называлась, она выглядела так:

возможной причиной является несинхронизированный доступ к GUI из потока. Вы сказали, что нить этого не делает, но не видя TRunThread.Execute исходный код, который выглядит как догадка.

у меня была такая же проблема, код ошибки 5 Access is denied . Это оказалось связано с тем, что поток начал тестировать подключение к интернету на встроенной панели (используя BeginThread ). Если пользователь выходит из формы (которая тестирует подключение к Интернету) сразу после отображения формы, AV возникает.

на моем ПК разработки тест подключения к интернету был успешным. и так быстро, что я никогда не видел проблемы! После нескольких часов борьбы я, наконец, отследил его до этой темы и воспроизвел его, отсоединив сетевой кабель.

решение было простым: при выходе из формы (напр. в FormDestroy event) убедитесь, что поток определенно не работает перед продолжением.

Это наиболее распространенное условие «IE Error Code 1400», известное как ошибка времени выполнения (ошибка). Разработчики тратят много времени и усилий на написание кода, чтобы убедиться, что Internet Explorer стабилен до продажи продукта. Как и во всем в жизни, иногда такие проблемы, как ошибка 1400, упускаются из виду.

Почему происходит ошибка времени выполнения 1400?

Сбой устройства или Internet Explorer обычно может проявляться с «IE Error Code 1400» в качестве проблемы во время выполнения. Три распространенные причины, по которым ошибки во время выполнения, такие как всплывающее окно ошибки 1400:

Ошибка 1400 Crash — Ошибка 1400 является хорошо известной, которая происходит, когда неправильная строка кода компилируется в исходный код программы. Обычно это происходит, когда Internet Explorer не может обработать данные в удовлетворительной форме и поэтому не может получить ожидаемый результат.

Утечка памяти «IE Error Code 1400» — Когда Internet Explorer обнаруживает утечку памяти, операционная система постепенно работает медленно, поскольку она истощает системные ресурсы. Потенциальным фактором ошибки является код Microsoft Corporation, так как ошибка предотвращает завершение программы.

Ошибка 1400 Logic Error — Логическая ошибка вызывает неправильный вывод, даже если пользователь дал действительные входные данные. Виновником в этом случае обычно является недостаток в исходном коде Microsoft Corporation, который неправильно обрабатывает ввод.

Распространенные проблемы IE Error Code 1400

Общие проблемы IE Error Code 1400, возникающие с Internet Explorer:

  • «Ошибка в приложении: IE Error Code 1400»
  • «IE Error Code 1400 не является программой Win32. «
  • «Возникла ошибка в приложении IE Error Code 1400. Приложение будет закрыто. Приносим извинения за неудобства.»
  • «Не удается найти IE Error Code 1400»
  • «IE Error Code 1400 не может быть найден. «
  • «Ошибка запуска в приложении: IE Error Code 1400. «
  • «Не удается запустить IE Error Code 1400. «
  • «Отказ IE Error Code 1400.»
  • «Ошибка пути программного обеспечения: IE Error Code 1400. «

Истоки проблем IE Error Code 1400

Проблемы IE Error Code 1400 могут быть отнесены к поврежденным или отсутствующим файлам, содержащим ошибки записям реестра, связанным с IE Error Code 1400, или к вирусам / вредоносному ПО.

Ну и меняю его обработчик на свой.

Все отлично работает.

Выдает ошибку EOSerror: «System Error. Code 1400: Недопустимый дескриптор окна». Как побороть?

> Ну и меняю его обработчик на свой.
> Все отлично работает.

Оное деяние весьма сомнительно.

А приложение win32?

Ну чтобы что-то присвоить m_hook_window.ParentWindow. А что еще можно присвоить?

P.S. Приложение Win32.

> Ну чтобы что-то присвоить m_hook_window.ParentWindow. А
> что еще можно присвоить?

Хендл окна, созданного в том же потоке.
Хотя, видимо, не очень удачен сам замысел использования дочернего окна.

Если с самого начала, то и само создание окна сомнительно,
бо если оно создается в конструкторе, то это не окно
создаваемого потока.
Ну, и с разрушением не все гладко, бо контролы включаются
в массив Controls and so on. Плюс последовательность —
при завершении потока окна уже нет (окно — собственность потока).

> 2 Набережных С.: так можно мне использовать AllocateHWND?
> Может какие-то доп. меры принять для увеличения

Ну и меняю его обработчик на свой.

Все отлично работает.

Выдает ошибку EOSerror: «System Error. Code 1400: Недопустимый дескриптор окна». Как побороть?

> Ну и меняю его обработчик на свой.
> Все отлично работает.

Оное деяние весьма сомнительно.

А приложение win32?

Ну чтобы что-то присвоить m_hook_window.ParentWindow. А что еще можно присвоить?

P.S. Приложение Win32.

> Ну чтобы что-то присвоить m_hook_window.ParentWindow. А
> что еще можно присвоить?

Хендл окна, созданного в том же потоке.
Хотя, видимо, не очень удачен сам замысел использования дочернего окна.

Если с самого начала, то и само создание окна сомнительно,
бо если оно создается в конструкторе, то это не окно
создаваемого потока.
Ну, и с разрушением не все гладко, бо контролы включаются
в массив Controls and so on. Плюс последовательность —
при завершении потока окна уже нет (окно — собственность потока).

> 2 Набережных С.: так можно мне использовать AllocateHWND?
> Может какие-то доп. меры принять для увеличения

У меня эта байда вываливалась, когда я ДБРичЕдит ложил на форму, разворачивал в клиента и ставил висибл в фалш. (дизайн-моде)
Закрываешь форму — лови 1400.

Ставишь визибл в тру — всё работает.

При создании формы делаешь визибл — фальш, лови 1400.

В процессе работы, когда форма уже открылась, визибл — фальш. — работает.

Гремлины, не иначе. Что за чертовщина до конца не разобрался, спрятал его под другую компоненту (визибл — тру) и плюнул. С Обычным ричедитом, который лежит там-же такого не наблюдается.

Читайте также:

      

  • Установка пластиковых окон в егорьевске
  •   

  • Ремонт пластиковых окон в махачкале на дому
  •   

  • Можно ли прокладывать воздуховод противодымной вентиляции через окно
  •   

  • Окно из дома на улицу
  •   

  • Как сделать kings bounty в окне

Понравилась статья? Поделить с друзьями:
  • Системная ошибка код 126 не найден указанный модуль
  • Системная ошибка когда инге танцует фильм 2013
  • Системная ошибка когда инге танцует 2013 трейлер
  • Системная ошибка камеры рендж ровер эвок
  • Системная ошибка камеры range rover sport