问题列表 - 第25113页

端口Win32 DLL挂钩到Linux

我有一个程序(NWShader)挂钩到第二个程序的OpenGL调用(NWN)来做后处理效果和诸如此类的东西.

NWShader最初是为Windows构建的,通常是现代版本(win32),并使用DLL导出(让Windows加载它并获取一些OpenGL函数)和Detours(挂钩到其他函数).我正在使用Win在查看sysdir之前在当前目录中查找任何DLL的技巧,因此它会加载我的.我在DLL上使用此方法重定向:

#pragma comment(linker, "/export:oldFunc=nwshader.newFunc)
Run Code Online (Sandbox Code Playgroud)

将它们发送到我自己的DLL中的不同命名函数.然后我做任何处理并从系统DLL调用原始函数.

我需要将NWShader移植到Linux(NWN存在于两种版本中).据我所知,我需要做的是一个共享库(.so文件).如果这是在NWN可执行文件之前预加载的(我找到了一个shell脚本来处理它),我的函数将被调用.唯一的问题是我需要调用原始函数(我会使用各种DLL动态加载方法,我认为)并且需要能够像Detour一样进行内部函数挂钩.

目前我正在使用Ubuntu 9.10 x64(使用32位编译器标志).我无法在Google上找到太多帮助,但我不确切地知道*nix社区所指的是什么.我可以编写C++代码,但我更习惯于Windows.作为OpenGL,需要修改以与Linux兼容的唯一部分是挂钩代码和调用.有没有一种简单易行的方法,或者它是否涉及重新创建Detours并动态加载原始函数地址?

c++ linux dll hook winapi

4
推荐指数
1
解决办法
4117
查看次数

需要澄清C#标志

我有这个代码:

[Flags]
public enum MyUriType {
    ForParse,
    ForDownload,
    Unknown
}
Run Code Online (Sandbox Code Playgroud)

然后:

MyUriType uriType = MyUriType.ForDownload;
Run Code Online (Sandbox Code Playgroud)

但是,我想知道为什么这会返回true:

if ((uriType & MyUriType.ForParse) == MyUriType.ForParse)
Run Code Online (Sandbox Code Playgroud)

未在第二个代码组中设置时.请指教.

c# flags

0
推荐指数
1
解决办法
115
查看次数

13
推荐指数
2
解决办法
5552
查看次数

MVVM:瘦ViewModels和Rich Models

我将继续努力克服MVVM模式,并且在尝试为小型/中型项目创建实用设计时,遇到了许多挑战.其中一个挑战是弄清楚如何在不创建大量重复,难以维护的代码的情况下获得与此模式解耦的好处.

我目前的策略是创建"丰富"的模型类.他们充分意识到它们将被MVVM模式消耗并实现INotifyPropertyChanged,允许观察它们的集合并且仍然认识到它们可能总是被观察.我的ViewModel类往往很薄,只在实际需要转换数据时暴露属性,其大部分代码是RelayCommand处理程序.视图可以直接绑定到ViewModel或Models,具体取决于是否需要进行任何数据转换.我使用AOP(通过Postsharp)来缓解INotifyPropertyChanged的痛苦,这样就可以很容易地以这种方式使我的所有Model类"丰富".

使用这种方法有明显的缺点吗?我可以假设ViewModel和View是如此紧密耦合,如果我需要View的新数据转换,我可以根据需要将其添加到ViewModel中吗?

c# wpf model mvvm

10
推荐指数
1
解决办法
1459
查看次数

使用ostream格式化整数输出

我试图使用cout << <<endl格式找到%2d的等价.我怎样才能做到这一点?

c++

4
推荐指数
1
解决办法
4134
查看次数

如何使用 Python 启动带有多个选项卡的新 Firefox 窗口

我想创建一个 MSWindows Python 程序,每次运行时都会启动一个带有多个选项卡的新 Firefox 窗口。例如,如果我想搜索“hello”,则会弹出一个新窗口(即使 Firefox 窗口已打开),然后启动 Google 和 Bing 选项卡搜索“hello”。如果我将关键字更改为“world”,则会再次弹出一个新的浏览器,并在 Google 和 Bing 选项卡中搜索“world”。

我查看了 webbrowser 模块,但无法实现: 1. 当浏览器已打开时启动新浏览器:例如 webbrowser.open(' http://www.google.com ',new=1)将打开一个新选项卡 2. 在同一窗口中同时启动多个选项卡

感谢您的帮助。

谢谢。

python windows firefox tabs

4
推荐指数
1
解决办法
4538
查看次数

Scala:如何组合来自不同对象的解析器组合器

给定一系列实现解析器组合器的对象,如何组合解析器?由于Parsers.Parser是一个内部类,并且在Scala 内部类中绑定到外部对象,故事变得有点复杂.

这是一个尝试组合来自不同对象的两个解析器的示例.

import scala.util.parsing.combinator._

class BinaryParser extends JavaTokenParsers {
  def anyrep: Parser[Any] = rep(any)
  def any: Parser[Any] = zero | one
  def zero: Parser[Any] = "0"
  def one: Parser[Any] = "1"
}

object LongChainParser extends BinaryParser {
  def parser1: Parser[Any] = zero~zero~one~one
}

object ShortChainParser extends BinaryParser {
  def parser2: Parser[Any] = zero~zero
}

object ExampleParser extends BinaryParser {
  def parser: Parser[Any] = (LongChainParser.parser1
    ||| ShortChainParser.parser2) ~ anyrep

  def main(args: Array[String]) {
    println(parseAll(parser, args(0) )) …
Run Code Online (Sandbox Code Playgroud)

parsing scala parser-combinators

16
推荐指数
1
解决办法
1696
查看次数

如何删除从Web服务返回的无法识别的字符?

我正在开发一个叫休息网络服务的应用程序.有时,xml响应包含手机无法显示的字符.显示这些字符时,会显示一个空框.我想过滤掉这些字符.如何检测字符是否能够在屏幕上显示?

一些特定字符包括:

http://www.fileformat.info/info/unicode/char/0094/index.htm http://www.fileformat.info/info/unicode/char/0080/index.htm http://www.fileformat.信息/资讯/ Unicode的/炭/ 0092/index.htm的

java xml encoding parsing android

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

php上传文件功能

我正在尝试编写一个通过html表单上传文件的脚本.当我点击提交没有任何反应.

file:upload_form.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>

<form action="do_upload.php" method="post" enctype="multipart/form-data"></form>
<p><strong>File to upload</strong></p>
<p><input name="img1" type="file" size="30" /></p>
<p><input name="submit" type="submit" value="Upolad File" /></p>

</body>
</html>
Run Code Online (Sandbox Code Playgroud)

file:do_upload.php

<?php
if ($_FILES[img1] != "" {
    @copy($_FILES[img1] [tm_name], "/tmp" .$_FILES[img1][name])
    or die("couldnt copy the file");
} else {
    die("no file specified");
}
?>

<HTML>
<head>
<title>Successfull File Upload</title>
</head>
<body>

<h1>Success</h1>
<p>You sent: <? echo $_FILES[img1][name]; ?>, …
Run Code Online (Sandbox Code Playgroud)

php file-upload

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

如何在ASP.NET MVC 2中的每个控制器操作之前获取某些代码?

我想检查一些关于会话状态,用户代理等的事情,并且可能采取行动并在控制器方法有机会执行之前返回特殊视图.例如:

最常见的:
用户请求Home/Index
System检查以确保x!= 0.
x不等于零,因此Home/Index控制器执行正常.

但是,有时候:
用户请求Home/Index
System检查以确保x!= 0.
x DOES等于零.必须通知用户,并且不能允许执行所请求的控制器操作.

认为这涉及ActionFilters的使用.但我已经阅读过它们,我不明白我是否可以抢占控制器方法并在执行之前返回一个视图.我确信我可以在控制器方法运行之前执行代码,但是如何防止它在某些情况下运行并返回自定义视图,或者直接转到不同的控制器方法?

更新:我实施了RM的解决方案.这就是我做的:

public class MyAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        if (myValue == wrongValue)
        {
            filterContext.Result = new ViewResult{ViewName = "Notice"};
        }
        base.OnActionExecuting(filterContext);
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,当myValue出错时,这些用户将获得Notice视图,并且永远不会执行所请求的控制器.为了完成这项工作,我将它应用于我所有控制器继承的ControllerBase.

asp.net-mvc

37
推荐指数
1
解决办法
2万
查看次数

标签 统计

c# ×2

c++ ×2

parsing ×2

python ×2

android ×1

asp.net-mvc ×1

django ×1

dll ×1

encoding ×1

fabric ×1

file-upload ×1

firefox ×1

flags ×1

hook ×1

java ×1

linux ×1

model ×1

mvvm ×1

parser-combinators ×1

php ×1

scala ×1

shell ×1

tabs ×1

unix ×1

winapi ×1

windows ×1

wpf ×1

xml ×1