小编T.R*_*Rob的帖子

我可以使用hwnd/NativeWindow来设置我的WinForms表单所有者的行为吗?

我的应用程序是一个vb6可执行文件,但系统中的一些较新的表单是用C#编写的.我希望能够使用主应用程序窗口的句柄设置C#表单的Owner属性,以便在我的应用程序和其他应用程序之间来回切换时,对话框保持在最顶层.

我可以获得主应用程序窗口的hwnd.我不确定我能从那里做什么?


更新2008年10月20日17:06:

斯科特,

谢谢你的回复.我忽略了Show/ShowDialog方法参数不是Form类型 - 我只查看Owner属性.

我稍微修改了我正在使用的代码 - 我们有一个组件通常加载我们的Forms并调用ShowDialog.我的代码看起来像这样:

Form launchTarget = FormFactory.GetForm(xxx);  // psuedo-code for generic form loader
launchTarget.StartPosition = FormStartPosition.CenterParent;
IWin32Window parentWindow = GetWindowFromHwnd(hwnd);

launchTarget.ShowDialog(parentWindow);
Run Code Online (Sandbox Code Playgroud)

GetWindowFromHwnd 是代码的方法包装版本:

private IWin32Window GetWindowFromHost(int hwnd)
{
    IWin32Window window = null;
    IntPtr handle = new IntPtr(hwnd);

    try
    {
        NativeWindow nativeWindow = new NativeWindow();
        nativeWindow.AssignHandle(handle);
        window = nativeWindow;
    }
    finally
    {
        handle = IntPtr.Zero;
    }

    return window;
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,这并不是我所希望的.表单以模态方式显示,但它没有显示在正确的位置,也没有在我离开并返回父窗口时仍然在顶部.我们的模态不会在任务栏中显示任务,因此窗口看起来"消失"(尽管它仍然存在于alt-tab窗口列表中).那对我来说表明我可能没有合适的人.如果您有任何其他建议,请回复.再次感谢.


更新于2008年11月10日16:25

一个跟进注释 - 如果你将它分解为try/finally中的方法调用,就像在Scott的第二篇文章中那样,finally块中的调用应该是:

parentWindow.ReleaseHandle();
Run Code Online (Sandbox Code Playgroud)

c# hwnd winforms

6
推荐指数
1
解决办法
5558
查看次数

当会话超时时,php观察者模式将用户注销

我正在尝试在用户的会话超时发生时将用户注销.记录用户 - 在我的情况下 - 需要修改用户在数据库中的"在线"状态.
我当时认为我可以使用观察者模式来制作一些监视用户会话状态的东西,并在会话到期时触发回调 - 这将保留用户的名字,以便我们可以更新数据库.我不确定在会话方面从哪里开始.我可以将回调绑定到会话的超时吗?

这些内容是否包含在任何可用的pear或zend会话包中?我将用我所拥有的一切来实现这一目标!



更新@ 16:33:
如果您的系统中用户可以互相交互(但他们只能与在线用户交互),该怎么办?用户需要知道当前哪些其他用户在线.

如果我们只是在每次刷新页面时检查会话是否仍处于活动状态,那么在超时后,用户将被发送到未登录的页面,但它们仍然在系统中列为在线状态.

该方法没有问题,只是当我们超时会话时,我们会丢失有关用户登录的信息.



更新@ 16:56:
对.谢谢.我同意......有点难看.我已经对服务器发生了一些缓慢的轮询,因此实现该方法非常容易.对于会话处理包来说,这似乎是一个非常有用的功能.Zend和PEAR都有会话包.

php session timeout observer-pattern

6
推荐指数
1
解决办法
3592
查看次数

如果消息在MQ中回滚会发生什么?

我从WebSPhere MQ队列收到消息.我尝试处理,如果我收到一些异常,我想将消息回滚到MQ队列.

我也没有遇到任何问题.消息会怎么样?它是否排在队列的底部?

如果我尝试从队列中拉出一条消息,我会收到相同的消息,我回滚了吗?

可能是什么行为?我想通常在高容量队列场景中知道这种行为?

感谢任何输入.

谢谢,Manglu

transactions message-queue high-volume ibm-mq

6
推荐指数
3
解决办法
1万
查看次数

使用Macports有任何风险吗?

我正在考虑在我的Mac上安装MacPorts,这样我就可以轻松访问*nix开发工具/应用程序了.但是,我想知道是否有任何风险.我不时会遇到不可避免的兼容性问题(听说Snow Leopard + MacPorts有问题),但我不希望我的"核心"Mac系统的稳定性受到影响.如果MacPorts增加了任何重大的安全风险,我也很好奇.

感谢帮助!

unix macos development-environment macports

6
推荐指数
1
解决办法
2658
查看次数

URL中的HTML和CSS导致404错误(用户代理= Trident/4.0)

我已经在URL中获得了一些带有代码片段(CSS,HTML和JavaScript)的404.

尽管我可以告诉用户在他们的会话期间正在通过网站正常进展 - 它是一个电子商务网站,受影响的用户正在把东西放在他们的篮子里并检查确定等.

在某些页面上,我看到404错误与看似成功的页面显示相邻.每次显示该页面时(在该会话中),我都会收到相同的404错误.

记录的404错误示例:

404;http://www.example.com/rrepeat: repeat-y;
Run Code Online (Sandbox Code Playgroud)

在页面上有一个匹配的实例(除了第一个"r"):

<td style="background-image: url(/i/lb_ccccccbrd.gif); background-repeat: repeat-y;">
Run Code Online (Sandbox Code Playgroud)

我检查了包含的CSS文件,没有匹配(假设他们这样做,我会在包含CSS文件的所有页面上获得404)

我的想法是,它可能是IE8的插件,它在用户正在查看它以缓存某些内容时抓住页面 - 或者可能出于更恶意的目的.页面的用户代理和404(在该会话中)是相同的[不知道插件是否会对浏览器本身显示不同?]

其他例子:

/r/table&gt;&lt;/form&gt;&lt;/td&gt;&lt;td width= 
/r width=

/r alt= 

/rurn pair[1]; --&gt;</SPAN> --&gt;</SPAN>--&gt;</SPAN>function Set_Cookie( name, value, expires, path, domain, secure ) <SPAN style="color:red;font-weight:bold;background-color:yellow;">&lt;!--/ set time, it's in millisecondsvar today = new Date();today.setTime( today.getTime() );/*if the expires variable is set, make the correct expires time, the current script below will set it for x number of days, to make it for hours, delete * 24, …
Run Code Online (Sandbox Code Playgroud)

javascript cookies user-agent internet-explorer-8 http-status-code-404

6
推荐指数
1
解决办法
1905
查看次数

没有web2py的DAL

我正在使用web2py为我的网站供电.我决定将web2py DAL用于在网站后面运行的长期运行程序.该程序似乎没有更新其数据或数据库(有时).

from gluon.sql import *
from gluon.sql import SQLDB

from locdb import * 
# contains
# db = SQLDB("mysql://user/pw@localhost/mydb", pool_size=10)
# db.define_table('orders', Field('status', 'integer'), Field('item', 'string'),
#    migrate='orders.table')
orderid = 20 # there is row with id == 20 in table orders
#when I do 
db(db.orders.id==orderid).update(status=6703)
db.commit()
Run Code Online (Sandbox Code Playgroud)

它不会更新数据库,并且具有此ID的订单上的选择会显示正确的数据.在某些情况下,提交后的"db.rollback()"似乎有所帮助.

至少可以说很奇怪.你见过这个吗?更重要的是你知道解决方案吗?


更新:
更正:有问题的选择是在程序内完成的,而不是在程序之外.

有时,在进行一系列更新时,有些会在外面工作并且可用,而有些则无法使用.此外,一些查询将返回它最初返回的数据,即使数据在自原始查询后数据库中发生了更改.

我很想抛弃这种方法并转向另一种方法,任何建议?

data-access-layer web2py

6
推荐指数
1
解决办法
1207
查看次数

用于从Perl中的系统命令输出的文件句柄

我在Perl中执行的系统命令的输出是否有文件句柄/句柄?

perl ipc pipe stdio filehandle

6
推荐指数
2
解决办法
2856
查看次数

使用Websphere MQ主题.NET API

我读了这篇文章

并且仍然不理解主题如何在MQ中工作的概念.在JMS中,我知道您可以在主题上发布消息,并且为了从它接收消息,您首先需要订阅它(在接收阶段使用订阅名称).

它在MQ中如何工作?我想写一个简单的场景(如在JMS中):

  • 1.发布到主题
  • 2.从主题接收 - 将失败(我尚未订阅)
  • 3.订阅
  • 4.接收 - 自我在发布后订阅以来无需接收
  • 5.发布
  • 6.收到 - 成功

    示例代码(.NET)会很有帮助

    家伙

  • .net publish-subscribe mq websphere-7 ibm-mq

    6
    推荐指数
    1
    解决办法
    6289
    查看次数

    什么是RFHUTIL用于?

    什么是RFHUTIL.有什么用途?

    ibm-mq

    6
    推荐指数
    1
    解决办法
    3万
    查看次数

    C#.NET基于文档的应用程序操作图表

    我想开发一个新的应用程序,用户可以在其中创建描绘进程的图表.我认为在这种情况下,基于文档的应用程序是我唯一的选择.我熟悉C#.net,C++ MFC和J2EE.

    根据您的经验,这是实现这一目标的最佳方式,我应该关注哪个平台?

    图表必须包含框和箭头连接.或多或少类似于Visio中的EPC图,不同之处在于,当一个进程正在运行时,该图必须呈现具有一些视觉效果的进度.例如闪烁的盒子或改变箭头的颜色.

    我知道这不是很清楚,但如果有人能帮忙,我会非常感激.

    先感谢您

    .net c# diagram mfc java-ee

    6
    推荐指数
    1
    解决办法
    1058
    查看次数